Autoconf的AC_COMPILE_IFELSE在不同的编译器下为我们错误检测功能,例如Sun的C++编译器和IBM的xlC编译器。AC_COMPILE_IFELSE似乎检查返回值,但一些编译器懒得设置它或将其设置为意外值。稍后,我们使用不可用的选项。在我的非Autoconf构建脚本中,我使用"fatal|error|illegal|unrecognized|notfound|notexist"来检测编译器或链接器投诉。它比仅检查$?更可靠。测试看起来像:#infileandoutfilearetempfilesthatallowtestingafeatureSH_ERROR=$(
例如我有2个Makefile:Makefile.Debug和Makefile.Release。我可以通过设置不同的命令在它们之间切换:C/C++Build->BuilderSettings->构建命令:make-fMakefile.Debug-j4或make-fMakefile.Release-j4,但是如何我可以在EclipseGUI中的两个makefile之间切换吗(就像在VisualStudio调试/发布配置中一样)? 最佳答案 在Eclipse中创建两个构建配置,每个配置使用不同的make命令。然后,您可以单击Eclipse
我想在我的代码中使用std::experimental::filesystem,这需要我使用-lstdc++fs与GCC和进行编译-lc++experimental使用Clang。目前我有一个makefile和makefile.clang反射(reflect)了编译的差异,或者我考虑过使用clang构建目标以便我可以运行buildclang.是否有一些规范的方法可以在makefile中设置特定于编译器的标志? 最佳答案 正如用户“Someprogrammerdude”提到的,有conditionals在GNU中。您可以通过这种方式轻
在C中,空格可以包含在printf格式化标志中,这会导致正数以空格为前缀。这是对齐有符号值的有用功能。我不知道如何在C++中做同样的事情。在C中:doubled=1.2;printf("%f\n",d);printf("%+f\n",d);printf("%f\n",d);产生:1.2+1.21.2使用ostream,我可以做前两个,但我如何做第三个?intd=1.2;std::cout编辑:关于我是否只想在我的所有值前加上一个空格似乎有些困惑。我只想在positive值前加上一个空格,类似于a)像printf空格标志所做的和b)类似于showpos所做的,除了空格而不是'+'。例如:
我能够使用带-std=c++0x选项的gcc编译单个文件。但是我不能通过makefile来做到这一点。这是我的makefile中的一组标志(在make之后提示c++11关键字):MACHINE=$(shellecho`uname-s`-`uname-m`|sed"s///g")CCC=CCCCC=g++CFLAGS=-O3CFLAGS=-std=c++0xCFLAGS=-pg-D_DEBUG-g-c-WallLFLAGS=-OLFLAGS=-pg-g我错过了什么?编辑:我将其更改为以下内容,但我仍然遇到编译错误,这是我在命令行gcc调用中没有得到的。CXXFLAGS=-O3-std=c
有谁知道通过扫描目录中的源文件来生成makefile的工具吗?这可能是幼稚的:无需检测外部依赖使用默认编译器/链接器设置 最佳答案 您可以编写一个Makefile来为您完成此操作:SOURCES=$(shellfind.-name"*.cpp")OBJECTS=$(SOURCES:%.cpp=%.o)TARGET=foo.PHONY:allall:$(TARGET)$(TARGET):$(OBJECTS)$(LINK.cpp)$^$(LOADLIBES)$(LDLIBS)-o$@.PHONY:cleanclean:rm-f$(TAR
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。makefile对于程序员来说是高级问题还是通用问题?对于C++程序员,他多久会被要求编写一个makefile文件?
我正在使用Autoconf构建我的C++项目。它使用第三方代码,这些代码也是在Autoconf/Automake的帮助下构建的。所以在我的configure.ac中有以下行:AC_CONFIG_SUBDIRS([subdirectoryname])一切正常,但我还使用该功能让测试在执行makecheck时自动进行-这也是由第三方代码完成的。因为这些测试需要一段时间,所以每次我想测试自己的代码时都执行它们很烦人。那么有没有办法避免check选项被传递给子目录的Makefile呢?更新:覆盖check-recursive似乎不是一个选项,因为我的顶级Makefile.am看起来(或多或少)
我正在做一个c++项目,我们最近需要在其中包含一小部分boost。boost部分真的很小(Boost::Python),因此,使用bjam来构建一切看起来有点矫枉过正(此外,从事该项目的每个人都对make感到满意,并且对jam一无所知)。我已经做了很多测试,但我找不到将前面提到的库包含在我的makefile中并使构建成功的方法。非常感谢您的所有帮助。:) 最佳答案 您可以使用Boost的bcputility仅提取您需要的Boost子集。这将最大限度地减少构建时间和大小。不过,这并没有回答您的问题。您可能需要考虑单独构建Boost.P
考虑以下Makefile:#INCL=-I../include\-ICPPFLAGS=$(DEFS)$(INCL)CXXFLAGS=-O0-g-Wall-fmessage-length=0SRCS=$(wildcard*.cpp)OBJS=$(SRCS:.cpp=.o)all:$(OBJS)%.o:%.cpp$(CXX)$(CPPFLAGS)$(CXXFLAGS)-c-o$@$$@clean:rm-f$(OBJS)rm.depend-include.depend此Makefile使用g++-M命令创建一个#include依赖链,并包含它。这可能是一个相当漫长的过程。问题是即使调用了ma