草庐IT

Makefile

全部标签

c++ - 尝试编译qt项目时编译错误

我正在尝试编译我的Qt项目,它在Linux机器上编译得很好,但是在我的Mac上我收到以下错误:../../Qt5.0.1/5.0.1/clang_64/include/QtCore/qlist.h:52:10:fatalerror:'initializer_list'filenotfound#include^知道如何解决这个问题吗? 最佳答案 这是mac尝试使用64位clang编译器编译Qt5.0+项目时的一个已知错误。为了解决此冲突,请尝试this中列出的步骤错误修复论坛帖子:1)克隆桌面Qt5.0.0clang64位(SDK)工

c++ - 如何使用*.o和*.d文件?

我想尝试使用库来运行示例。在库的文档中写道,我需要将所有文件复制到我的目录中,然后键入make。之后,我需要转到“Debug”文件夹并键入./lib_examples来运行示例。我执行了这个序列。结果,我在“调试”子目录中有很多*.o和*.d文件。其中有lib_examples.o和lib_examples.h文件。但是没有我应该执行的lib_example文件。有谁知道应该发生什么以及哪里出了问题。我是否应该再执行一步才能使用*.o和*.d文件? 最佳答案 “.o”文件可能是应该从中创建实际可执行程序的中间文件。“.d”文件可能是

c++ - Lapack 链接错误,使用 -fPIC 重新编译

我有一个用Levenberg-Marquardt方法拟合非线性函数的复杂程序。该程序使用Lapack库中的线性方程组求解器,我曾在其中使用过:extern"C"...链接到外部Fortran库。该程序在我的笔记本电脑(使用Ubuntu12.04)上运行没有任何问题,并且我已经使用它进行了一段时间的测试。问题:现在我搬到了胖乎乎的64核计算机上,以便开始做一些真正的计算,计算机上有一个scientificlinux6。原来大电脑没有安装lapack,所以我得到了lapack3.4.2,编译了它,然后按照这里的说明来构建它:http://matrixprogramming.com/2011

c++ - 制作 : pattern rule matching multiple extensions

我有几个扩展的重复模式规则(例如:cpp和cc):$(OBJ_DIR)/%.o:$(SRC_DIR)/%.cpp@$(CXX)$(CPPFLAGS)-I.-o$@-c$?$(OBJ_DIR)/%.o:$(SRC_DIR)/%.cc@$(CXX)$(CPPFLAGS)-I.-o$@-c$?有没有办法让一个模式规则在两个扩展上都匹配,而不是必须有两个规则? 最佳答案 不,您不能将这两个规则结合起来。所有先决条件都必须匹配。但是您可以避免需要两次指定配方。通过使用配方定义:defineCOMPILE@$(CXX)$(CPPFLAGS)-I

c++ - 如何强制重新编译 Makefile 中的单个文件?

这个想法是一个项目有一个文件,其中包含__DATE__和__TIME__。在不明确更改其修改日期的情况下重新编译它可能会很酷。编辑:$(shelltouch-c..)如果笨拙的话可能是一个很好的解决方案。 最佳答案 标准的习惯用法是让目标文件(不是源文件!)依赖于一个不存在且没有规则或依赖性的目标(这个目标通常称为FORCE),就像这样always-recompile.o:FORCEFORCE:不过,如果以某种方式创建了一个名为“FORCE”的文件,这将会中断。使用GNUmake,您可以改为使用特殊目标.PHONY,它没有此限制,但

c++ - 当我尝试编译时带有 boost 的 undefined reference

当我尝试使用boost编译我的服务器时,我遇到了很多错误。在这里,这是我的生成文件:NAME=serveurSRCS=Serveur/main.cpp\Serveur/Client.cpp\Serveur/Commande.cpp\Serveur/My_exception.cpp\Serveur/Network.cpp\Serveur/Server.cpp#####################################################OBJS=$(SRCS:.cpp=.o)CC=g++RM=rm-fCFLAGS=-g-W-Wall-WerrorINCL=./S

c++ - 为模板类制作 makefile

所以我有几个文件想一起编译。其中之一是包含stack.cpp的stack.h。下面是我的头文件:#include#ifndefSTACK_H#defineSTACK_HtemplateclassStackType{public://codeprivate://code};#include"stack.cpp"#endif下面是stack.cpp:#include"stack.h"#includeusingnamespacestd;templateStackType::StackType(){top=-1;MAX_ITEMS=200;}//othercodes}当我让它说我正在重新定义s

c++ - ld : library not found for -lrt

我正在尝试运行一个为Ubuntu创建并在MacOS上运行的项目。当我进行make时,出现以下错误:ld:librarynotfoundfor-lrtclang:error:linkercommandfailedwithexitcode1(use-vtoseeinvocation)make[2]:***[consumer]Error1make[1]:***[CMakeFiles/consumer.dir/all]Error2make:***[all]Error2我在项目中看不到任何具有该名称的库。谁能解释一下这是什么以及如何解决? 最佳答案

c++ - 将参数传递给 Makefile 以更改编译后的代码

我是新来的。我正在研究C++共享库,我希望它可以选择在支持或不支持某个功能(代码块)的情况下进行编译。换句话说,我如何通过(可能)将参数传递给make命令来让用户选择是否编译具有该功能的库?例如,我需要用户能够这样做:make--with-feature-x我该怎么做?例如,我需要写一个配置文件吗?或者我可以直接在我的Makefile中执行此操作吗? 最佳答案 我相信以下方法应该有效。您在运行make时定义了一个环境变量。在Makefile中,您检查环境变量的状态。根据状态,您可以定义在编译代码时将传递给g++的选项。g++使用预处

c++ - make后如何运行.o文件

我一直在尝试从https://github.com/rinon/Simple-Homomorphic-Encryption运行一个C++程序如README中所述,我运行了以下命令,makemaketestmakedemo现在,我的目录中有以下文件,zakirhussain@zakirhussain-K52F:~/Simple-Homomorphic-Encryption$lscircuit.cppdemo_vote_counter.cppfully_homomorphic.cppmain.osecurity_settings.htest_suite.outilities.ocircui