假设我有一个项目,其中包含一个简单的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创建构建目录编写一个脚本,在构建每个架构后
我下载了elfutils0.170和0.169,但由于隐式函数声明,无法使用gcc编译它们中的任何一个。我在elfutilsmakefile中找不到指定-Werror或-Werror=implicit-function-declaration的任何位置。有解决此编译错误的想法吗?https://sourceware.org/elfutils/ftp/0.170/我的脚步1:bzip2-delfutils-0.170.tar.bz22:tar-xvfelfutils-0.170.tar3:./配置4:制作然后出现以下错误。elf_compress_gnu.c:在函数“elf_compre
我最近编译了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$@
在EclipseCDT中点击“构建”符号时,应该只构建已更改的源文件。EclipseCDT的一个非常恼人的行为是它经常忽略已进行的“微小”更改,但并不清楚微小的含义。然后输出是13:21:06****IncrementalBuildofconfigurationforproject****makeallmake:Nothingtobedonefor`all'.我测试刚刚所做的更改的唯一方法是清理并完全重建整个项目,这会浪费很多时间。这可能是什么问题,我该如何修复增量构建?编辑:会不会因为一些时钟同步问题而忽略了最近发生的变化? 最佳答案
这个问题在这里已经有了答案: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
我有一个运行良好的opencv项目。今天我已经将我的OSXlion升级到Maverick,我收到以下imwrite函数的错误:Undefinedsymbolsforarchitecturex86_64:"cv::imwrite(std::__1::basic_string,std::__1::allocator>const&,cv::_InputArrayconst&,std::__1::vector>const&)",referencedfrom:_maininHello.old:symbol(s)notfoundforarchitecturex86_64我不得不说其他opencv函
我有一个项目需要访问嵌入到specialsection中可执行文件中的ELF文件.我以前手工制作Makefile,只是有一个shell脚本,我在其中使用objcopy将我想要嵌入的目标复制到一个.o文件中,然后在可执行文件中链接到该文件。#Createanewsectionandcopythebinarythere($1=input$2=outputname)objcopy--input-targetbinary--output-targetelf64-x86-64\--binary-architecturei386$1$2.o现在我想摆脱自定义Makefile并使用CMake生成它们