我有以下问题。编译成功后,如果我只更改其中一个.h文件中的一些内容后再次编译,计算机会说:make:没有什么可做的。即使我只修改了.h文件,我是否可以强制编译器重新编译? 最佳答案 如果您希望在头文件更改时更新您的输出,那么您必须将它添加到您的依赖语句中:myprogram:myprogram.cppmyprogam.hc++-omyprogrammyprogram.cpp通常我们不会这样做,因为做事的代码保留在cpp文件中。如果您使用的是unix并且想要强制重建,只需触摸一个cpp文件以使用“touchmyprogram.cpp”
我在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的代码。
我在充满.cpp和.h文件的目录中有以下Makefile:CFLAGS=-g-std=c++0x-Wall-pedantic-Wextra-D__STDC_LIMIT_MACROS-D__STDC_FORMAT_MACROS-O0CXX=g++LDFLAGS=-lgmp-lmathsat-lz3all:Foo.oBar.o$(CXX)$(CFLAGS)-omyexeFoo.oBar.o$(LDFLAGS)depend:.depend.depend:$(wildcard*.cpp)rm-f./.depend$(CXX)$(CFLAGS)-MM$^>./.dependinclude.dep
我在make文件中使用以下代码从CPP文件访问变量VENDOR_NAME。EXTRA_DEFINE+=-DVENDOR_NAME=$(VENDOR_NAME)VENDOR_NAME包含一个字符串。在我的cpp文件中,当我尝试使用此变量时,出现如下错误。coutFeature1.cpp.bak.cpp:8:'Default_Vendor'未声明(首先使用此功能)Feature1.cpp.bak.cpp:8:(每个未声明的标识符只报告一次我猜这是因为我的字符串不包含双引号并且编译器正在将VENDOR_NAME的内容视为变量。如何在我的CPP文件中将此变量作为字符串获取,以便我可以像使用#d
我们在Windows中编写C/C++程序时,常用的VS2019是一个集成开发环境,包含了很多工具包。而在Linux下开发,大部分的情况下都是使用一个个独立的工具。比如:编写代码用vim,编译代码用gcc,调试代码用gdb。一、编辑器-vim为什么选择使用vim呢?因为vim是所有Linux环境下自带的。vi/vim的区别简单点来说,它们都是多模式编辑器。不同的是 vim 是 vi 的升级版本,它不仅兼容 vi 的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于xwindow、macos、windows。这里统一选择按照 vim 来进行讲解。1、vi
在这个Makefile中,我不知道如何在混合C和C++的同一个Makefile中编译出c对象。如果我先编译C对象然后运行这个Makefile,它就可以工作。谁能帮我修好?提前致谢!CXX=g++CXXFLAGS=-Wall-D__STDC_LIMIT_MACROSSERVER_SRC=\main.cppSERVER_SRC_OBJS=${SERVER_SRC:.cpp=.o}REDIS_SRC=\$(HIREDIS_FOLDER)/net.c\$(HIREDIS_FOLDER)/hiredis.c\$(HIREDIS_FOLDER)/sds.c\$(HIREDIS_FOLDER)/as
我目前正在学习如何为C++程序制作和使用MakeFile。我已经能够为普通的.cpp类创建和运行Makefile,但我遇到了测试类的问题。为了进行测试,我在Code::Blocks中使用Gtest,并在“链接器设置”的Test_A.cpp文件中添加:/usr/lib/libgtest.a/usr/lib/libgtest_main.a对于其他链接器选项,我输入了“-pthread”。我知道以某种方式需要将这些库添加到makefile中,但我不知道如何添加。我最初认为它们需要添加到第3行,但我尝试的所有操作都返回了数千行错误类型:undefinedreferenceto`testing:
我正在努力从弗兰肯斯坦和一个文件数千行的程序转变为结构良好、组织良好的多文件程序。现在看起来很自然(天真)的是为我的三个文件制作一个包含标题的三角恋:file_1包括file_2、file_4file_2包括file_3、file_4file_3包括file_1....等等等等这些文件具有我在其他文件之间需要的变量、方法、结构等。当然,我遇到了双重包含错误。我的问题:我应该通过在header中使用预处理器指令(例如,完全在header中包括结构、方法等)来避免这些问题,还是应该使用makefile进行编译(我hear也可以用来解决这个问题---但我从来没有做过)?
我正在使用带有pvcs编译器的makefile系统(使用MicrosoftVisualC++,2008编译器),我收到了几个以下形式的链接错误:errorLNK2019:unresolvedexternalsymbol__imp__RegisterFilter@8referencedinfunction_main尽管使用了extern"C"声明,但还是会发生这种情况,即:extern"C"intCLRDUMP_APIRegisterFilter(LPCWSTRpDumpFileName,unsignedlongDumpType);此外,在makeexe.mak中,库链接如下:$(编译库