我有这个我不明白的生成文件。build_sources:=$(wildcard*.cpp)depends:=$(build_sources:.cpp=.d)build_targets:=$(build_sources:.cpp=).PHONY:allall:$(build_targets).PHONY:cleanclean:rm-f$(build_targets)*.{a,o,d}#buildthelistofheaderfiledependenciesautomatically%.d:%.cpp@echobuildingincludedependenciesfor$(*F)@$(CX
我正在尝试将Makefile项目转换为cmake。我的项目有一个可执行文件,它被构建并链接到内部共享库和外部共享库(可执行文件中对两者都有依赖性)。这是我的旧Makefile(通用化):Include=-I$(PROJ_DIRECTORY)/include-I/${EXTERN}/lnIncludeLibrary=-L$(PROJ_DIRECTORY)/build-lshared-L$(EXTERN_LIBBIN)-lexternCPPFLAGS=-D_GLIBCXX_DEBUG-DProjectRescource=$(PROJ_DIRECTORY)/resources-O0-g3-W
假设我有一个项目,其中包含一个简单的Makefile,如下所示:all:foobarfoobar:foo.obar.o我可以构建以针对不同的架构:$CC=clangmake#or$CC=x86_64-w64-mingw32-gccmake#or$CC=arm-linux-gnueabihf-gccmake这可行,但我希望能够同时维护多个配置的输出,例如在构建服务器上。什么是解决此问题的良好、简洁的方法?我考虑了以下几点:使用autotools或其他构建工具,但我想看看没有什么是可能的在其中设置VPATH并包含根Makefile的Makefile创建构建目录编写一个脚本,在构建每个架构后
我正在使用g++4.4.7编译一段非常古老的遗留代码。关于这段代码,我真正知道的是它是在Irix/Sun系统上开发的,这意味着它具有MIPS体系结构。我在使用这段代码时发现的一件相当奇怪的事情是,它有时会调用像endl和set_new_handler这样的函数而没有std::前缀。显然,这会导致编译错误。由于我假设这段代码有时会在某台机器上编译,因此我对盲目添加std::前缀以使其编译有点谨慎,因为它可能会改变行为.那么,是否有一些旧的非ISO编译器允许这段代码编译?或者是否有某种标志可以传递给gcc以允许这段代码工作? 最佳答案
我最近编译了MySQL并在Cygwin上运行,并从网上获得了一个简单的测试示例来验证它是否有效。测试样例编译运行成功。但是,当将MySQL合并到我的一个业余项目中时,它没有编译,我认为这是由于Makefile的设置方式所致,我没有使用Makefiles的经验,在阅读了有关它们的教程后,我有了更好的理解,但是仍然无法使其正常工作。当我尝试编译我的爱好项目时,我收到如下错误:Obj/Database.o:Database.cpp:(.text+0x492):undefinedreferenceto`_mysql_insert_id'Obj/Database.o:Database.cpp:(
假设我在VisualStudio2008中有一个C++项目,它的编译取决于许多配置设置。例如,我有可选的预处理器定义WITH_MYLIB和EXPERIMENTAL来修改代码。拥有MyLib的用户将希望使用在预处理器定义列表中具有WITH_MYLIB的项目配置进行编译,并将该库添加到包含/链接设置中。想要启用实验性功能的用户将希望将EXPERIMENTAL添加到预处理器定义中。但除了这些更改之外,其余的项目配置应该大部分相同。我试图避免创建“指数”数量的项目配置来处理所有可能性,即我不想拥有调试Debug_WithMyLibDebug_WithMyLib_Experimental调试实验
emacs中编译-运行周期的首选做法是什么?以前,我使用M-x编译(映射到F12)和make作为我的编译命令。在Makefile中,我有一个条目可以运行已编译的程序。当我的程序是非交互式的,但编译缓冲区是非交互式的时,这工作得很好。当然我可以打开一个shell并运行可执行文件,但我想尽可能地自动化编译-运行周期,我认为必须有一个标准的做法,我猜我正在执行-from-the-makefile方法很麻烦...C-uF12有效,但我想知道这是否是执行此操作的最佳方法(如果是,我如何绑定(bind)F12等同于C-uM-xcompile而不是M-xcompile?).
我一直在处理链接到.so(动态库)文件的C++项目。假设我有一个目标PROG需要链接到a.so,而a.so也是我构建的,在下面的Makefile中指定。PROG_SRCS=prog.cppPROG_OBJS=$(PROG_SRCS:%.cpp:%.o)all:PROGPROG:$(PROG_OBJS)liba.so$(LINK.cpp)-o$@$(PROG_OBJS)-laLIBA_SRCS=liba/a.cppLIBA_OBJS=$(LIBA_SRCS:%.cpp:%.o)liba.so:$(LIBA_OBJS)$(LINK.cpp)-shared-Wl.-soname,$@-o$@
这个问题在这里已经有了答案:Howtoplaceobjectfilesinseparatesubdirectory(9个回答)关闭9年前。我有这个目录结构:./src包含我需要的所有文件的.cpp和.h./bin应该包含暂时的.o和永久的.bin。此外,调用makeclean时应删除此文件夹。./包含Makefile这是我当前的Makefile:CFLAGS=-Wall-pedantic-gCC=g++EXEC=flrfileSRC_DIR=srcBIN_DIR=binOBJ=FixedLengthFieldsRecord.oFixedLengthRecordFile.omain.oa
这个问题在这里已经有了答案:CMAKE_MAKE_PROGRAMnotfound(16个答案)关闭4年前。全新的编码。我已经安装了CLion,并计划开始使用C++进行编码。我还安装了Cygwin。我已经研究了大约一个小时的编译器如何工作以及如何使用它,但是当我在Clion上选择编译器时,我得到了错误“CMake错误:CMake无法找到对应于“UnixMakefiles”的构建程序。未设置CMAKE_MAKE_PROGRAM。您可能需要选择其他构建工具。”“CMake错误:CMAKE_C_COMPILER未设置,在EnableLanguage之后”和“CMake错误:未设置CMAKE_C