我正在开始开发一个由多个模块组成的项目。我将使用专用的测试台验证这些模块中的每一个,每个模块都有它们的main()函数。我想避免为每个测试平台及其main()函数创建一个Eclipse项目。我读到了WorkingSets在我的项目中只显示与特定测试平台相关的文件的想法正是我所寻找的。但是,在构建阶段,Eclipse会继续构建所有项目文件,而不仅仅是当前的工作集文件。然后,由于多个main()函数,我遇到了链接器错误。如何将Eclipse配置为仅构建工作集的文件?是否有另一种方法可以在单个项目中分别构建多个程序,即应用程序及其组件测试平台? 最佳答案
所以我有一个C++项目,其中包含一个充满测试源文件的目录,我正在编写一个makefile来一次生成所有这些文件。除了单独编译每个文件,有没有一种方法可以将cd放入我的测试目录并循环遍历每个文件,一个一个地编译它们?在此先感谢您的帮助! 最佳答案 makefile隐式规则可用于制作文件夹中可用的所有文件。也可以使用通配符函数来获取特定文件夹中可用的.c或.cpp文件。%.o:%.cpp$(CC)-c$(CFLAGS)$(CPPFLAGS)$例子:FILENAME:=$(patsubst%.c,%.o,$(wildcard*.c))al
我正在尝试使用cmake为C++构建Box2D库。当我运行cmakegui时出现错误:CMakeError:CMakewasunabletofindabuildprogramcorrespondingto"MinGWMakefiles".CMAKE_MAKE_PROGRAMisnotset.Youprobablyneedtoselectadifferentbuildtool.CMakeError:CMakewasunabletofindabuildprogramcorrespondingto"MinGWMakefiles".CMAKE_MAKE_PROGRAMisnotset.Youp
目录导读1.make/Makefile1.1 引入1.2概念1.3语法规则1.4 示例2. Linux调试器-gdb2.1引入2.2概念2.3使用导读我们在上次讲了Linux编辑器gcc\g++的使用,今天我们就来进一步的学习如何调试,以及makefile这个强大的工具。1.make/Makefile1.1 引入会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力。一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作1.2概念在
我有几个扩展的重复模式规则(例如: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
这个想法是一个项目有一个文件,其中包含__DATE__和__TIME__。在不明确更改其修改日期的情况下重新编译它可能会很酷。编辑:$(shelltouch-c..)如果笨拙的话可能是一个很好的解决方案。 最佳答案 标准的习惯用法是让目标文件(不是源文件!)依赖于一个不存在且没有规则或依赖性的目标(这个目标通常称为FORCE),就像这样always-recompile.o:FORCEFORCE:不过,如果以某种方式创建了一个名为“FORCE”的文件,这将会中断。使用GNUmake,您可以改为使用特殊目标.PHONY,它没有此限制,但
所以我有几个文件想一起编译。其中之一是包含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++共享库,我希望它可以选择在支持或不支持某个功能(代码块)的情况下进行编译。换句话说,我如何通过(可能)将参数传递给make命令来让用户选择是否编译具有该功能的库?例如,我需要用户能够这样做:make--with-feature-x我该怎么做?例如,我需要写一个配置文件吗?或者我可以直接在我的Makefile中执行此操作吗? 最佳答案 我相信以下方法应该有效。您在运行make时定义了一个环境变量。在Makefile中,您检查环境变量的状态。根据状态,您可以定义在编译代码时将传递给g++的选项。g++使用预处
我在eclipse中导入了一个“现有代码作为makefile项目”项目。我想在eclipse中进行调试,例如我可以设置断点或单步执行代码。如果我直接调试项目,eclipse会说没有XXX.cpp的源代码,所以无法调试。我应该如何更改makefile以在eclipse中进行调试? 最佳答案 只需确保您的Makefile目标不会剥离可执行文件,并且它包含调试符号。这意味着gcc行不能包含-s,它应该包含-g这种简单的Makefile的一个例子是:TARGET=YOUR_EXECUTABLE_NAMESOURCES=$(shellecho
我有一个makefile为两个类(和main)创建目标文件,其中一个类只是在.h文件中定义。在我的makefile中有一行内容是FileName.o:FileName.hg++-cFileName.h但是当我尝试编译时它说找不到FileName.o我必须创建FileName.cpp才能编译吗? 最佳答案 您正在某处使用FileName.h中的类,对吗?所以至少你的.cpp文件之一应该包含#include"FileName.h",.h的代码将使用这个.cpp编译,你不需要单独编译.h的代码。