草庐IT

Makefile

全部标签

c++ - 有没有生成 Makefile 的好工具?

已结束。此问题不符合StackOverflowguidelines.它目前不接受答案。要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于StackOverflow来说是无关紧要的,因为它们往往会吸引固执己见的答案和垃圾邮件。相反,describetheproblem以及到目前为止为解决这个问题所做的工作。关闭8年前。Improvethisquestion我正在寻找可以生成Makefile的工具用于不同编译器(GCC、MicrosoftVisualC++、C++Builder等)和不同平台(Windows、Linux和Mac)的C/C++项目。 最佳答案

c++ - 对于使用 Makefile 的大型 C++ 项目,什么是好的目录结构?

对于使用Makefile的大型C++项目,什么是好的目录结构?这是我目前的目录结构:lib/(classimplementations*.cpp)include/(classdefinitions*.h)tests/(main.cppforquicktests)现在,我不确定我的Makefile应该是什么样子......当.cpp文件和.h文件不在同一个目录中时,它似乎不起作用。谁能给我指出一个带有Makefile的通用目录结构,这样我就不会重新发明轮子? 最佳答案 分离.h文件的.cpp并不总是一个好的解决方案。一般来说,当它用作

makefile - go的多包makefile示例

我正在尝试设置一个多包go项目,例如./main.go./subpackage1/sub1_1.go./subpackage1/sub1_2.go./subpackage2/sub2_1.go./subpackage2/sub2_2.go其中main.go导入subpackage1和subpackage2。并且subpackage2导入subpackage1。我一直在寻找gomakefile示例,但找不到任何支持这种设置的东西。有什么想法吗? 最佳答案 安装godag然后运行:gd-omyapp它会自动为您的src/目录中的所有依赖

linux - 区分 Windows 和类 Unix 系统的 Makefile

我希望在Linux和Windows上构建相同的Makefile。我在Linux上使用默认的GNUmake,在Windows上使用mingw32-make(也是GNUmake)。我希望Makefile检测它是在Windows还是Linux上运行。例如,Windows上的makeclean命令如下所示:clean:del$(DESTDIR_TARGET)但在Linux上:clean:rm$(DESTDIR_TARGET)我还想在Windows(\)和Linux(/)上使用不同的目录分隔符。可以在Makefile中检测Windows操作系统吗?PS:我不想在Windows上模拟Linux(c

linux - makefile 中的 -I 和 -L 有什么区别?

makefile中-I和-L标志的用途是什么? 最佳答案 这些通常是链接器命令行的一部分,或者直接在目标操作中提供,或者更常见地分配给将扩展为形成链接命令的make变量。在这种情况下:-L是包含库的目录的路径。库的搜索路径。-l是您要链接的库的名称。例如,如果您想链接到库~/libs/libabc.a,您需要添加:-L$(HOME)/libs-labc要利用默认的隐式链接规则,请将这些标志添加到变量LDFLAGS,如LDFLAGS+=-L$(HOME)/libs-labc把LDFLAGS和LIBS分开是个好习惯,例如#LDFLAGS

linux - Makefile 中的 ?= 是什么

KDIR?=$(shelluname-r)?=是什么意思?我从StackOverflow的另一个可用线程中了解了:=、+=和=之间的区别,但无法找到?=的解释。 最佳答案 ?=表示仅在KDIR变量未设置/没有值时设置它。例如:KDIR?="foo"KDIR?="bar"test:echo$(KDIR)将打印“foo”GNU手册:http://www.gnu.org/software/make/manual/html_node/Setting.html 关于linux-Makefile中的

linux - 抑制makefile中命令调用的回声?

我为一个作业编写了一个程序,该程序应该将其输出打印到标准输出。分配规范需要创建一个Makefile,当作为makerun>outputFile调用时,它应该运行程序并将输出写入一个文件,该文件具有与规范中给出的相同的SHA1指纹。我的问题是我的makefile:...run:javamyprogram还将运行我的程序(例如javamyprogram)的命令打印到输出文件,以便我的文件包含导致指纹错误的额外行。有没有什么方法可以在命令调用不回显到命令行的情况下执行命令? 最佳答案 将@添加到命令的开头告诉gmake不要打印正在执行的命

build-process - 特定于目标的变量作为 Makefile 中的先决条件

我正在尝试编写一个GNUmakeMakefile,它有很多类似的目标,其中构建命令在它们之间略有不同。我正在尝试使用target-specificvariables来表示这些变化。其中一些变量值引用了我想用作先决条件的文件。例如:target_1:special_filename=target1_prereqtarget_2:special_filename=target2_prereqtarget_1target_2:common_filename$(special_filename)do_somethingcommon_filename--a-weird-option=$(spec

makefile - cmake和并行构建与 "make -jN"

我正在尝试为我的源代码树设置一个基于CMake的并行构建,但是当我发布时$cmake.$make-j2我明白了:jobserverunavailable:using-j1.Add'+'toparentmakerule作为警告。有没有人知道是否有可能以某种方式修复它? 最佳答案 在生成的Makefile中,当调用子make时,它​​需要使用$(MAKE)(不仅仅是'make')或者在该行之前加上一个+。也就是说,规则应如下所示:mysubdir:$(MAKE)-Cmysubdir或者像这样:mysubdir:+make-Cmysubd

makefile - 为什么我被警告项目没有使用 "CMAKE_TOOLCHAIN_FILE"变量?

当我构建一些第三方代码时,我看到来自CMake的以下警告:CMakeWarning:Manually-specifiedvariableswerenotusedbytheproject:CMAKE_TOOLCHAIN_FILE是什么导致了这个警告?我检查了配置文件,但找不到定义此变量的任何地方。我应该担心这个警告吗?如何修复它以使警告消失? 最佳答案 这是CMake在您为其提供未使用的命令行选项时生成的标准警告。例如,当CMakeLists.txt文件实际上不使用FOO变量时,将-DFOO=bar传递给cmake。现在,这是一种特殊