Questions tagged «makefile»

生成文件是构建控制语言/工具生成的输入文件。它指定目标和依赖项以及要执行的相关命令(又称为配方)以更新目标。

12
检查Makefile中是否存在程序
如何检查是否可以从Makefile调用程序? (也就是说,该程序应该存在于路径中,否则可以被调用。) 例如,它可用于检查安装了哪个编译器。 例如类似这样的问题,但不假定底层shell与POSIX兼容。
115 makefile  gnu-make 

10
您可以制作没有制表符的有效Makefile吗?
target: dependencies command1 command2 在我的系统(Mac OS X)上,make似乎要求Makefile在每command行内容的前面带有一个制表符,否则会引发语法错误。 创建或编辑Makefile时这很烦人,因为我将编辑器设置为全时空。 您可以制作没有制表符的有效Makefile吗?



12
使用mkdir时如何防止makefile中的“目录已存在错误”
我需要在我的makefile中生成一个目录,即使我可以轻松地忽略它,我也不想一遍又一遍地得到“目录已存在错误”。 我主要使用mingw / msys,但也希望它能在其他Shell /系统中使用。 我试过了,但是没用,有什么想法吗? ifeq (,$(findstring $(OBJDIR),$(wildcard $(OBJDIR) ))) -mkdir $(OBJDIR) endif


6
如何将宏定义从“ make”命令行参数(-D)传递给C源代码?
我通常使用-Dname = value选项将宏定义从“ make命令行”传递到“ makefile”。该定义可在makefile中访问。 我还使用类似的编译器选项将宏定义从“ makefile”传递到“源代码”:-Dname = value(许多编译器都支持)。可在源代码中访问此定义。 我现在需要的是允许我的makefile的用户能够立即将任意宏定义从“ make.exe命令行”传递到“源代码”,而无需更改makefile中的任何内容。 因此用户可以输入:make -f mymakefile.mk -SOMEOPTION var = 5 然后直接在代码main.c中可以看到var: int main() { int i = var; }
107 c  macros  makefile 


8
GNU Makefile规则从单个源文件生成一些目标
我正在尝试执行以下操作。有一个名为的程序,它foo-bin接收一个输入文件并生成两个输出文件。愚蠢的Makefile规则是: file-a.out file-b.out: input.in foo-bin input.in file-a.out file-b.out 但是,这并不能说明make两个目标将同时生成。make串行运行时很好,但是如果尝试make -j16或同样疯狂的话,可能会引起麻烦。 问题是在这种情况下是否存在编写适当的Makefile规则的方法?显然,它会生成DAG,但是GNU make手册无法以某种方式指定如何处理这种情况。 两次运行相同的代码并且仅生成一个结果是不可能的,因为计算需要时间(认为:小时)。仅输出一个文件也将非常困难,因为经常将其用作GNUPLOT的输入,GNUPLOT不知道如何仅处理数据文件的一小部分。
105 makefile 

4
CFLAGS和CPPFLAGS
我了解CFLAGS(或C ++的CXXFLAGS)用于编译器,而CPPFLAGS由预处理器使用。 但是我仍然不明白区别。 我需要为#include包含的头文件指定一个include路径-因为#include是预处理器指令,所以预处理器(CPPFLAGS)是我唯一关心的吗? 在什么情况下需要给编译器额外的包含路径? 通常,如果预处理程序找到并包含所需的头文件,为什么还需要告知它额外的包含目录?CFLAGS到底有什么用? (在我的情况,我居然发现BOTH的这些让我编译我的程序,这增加了混乱......我可以使用CFLAGS OR CPPFLAGS实现我的目标(至少在autoconf的情况下)。是什么给了?)


9
使用make文件创建目录
我是makefile的新手,我想使用makefile创建目录。我的项目目录是这样的 +--Project +--output +--source +Testfile.cpp +Makefile 我想将所有对象放到各自的输出文件夹中。我想在编译后创建像这样的文件夹结构。 +--Project +--output +--debug (or release) +--objs +Testfile.o +Testfile (my executable file) +--source +Testfile.cpp +Makefile 我尝试了几种选择,但未能成功。请帮助我使用make文件创建目录。我正在发布我的Makefile供您考虑。 #--------------------------------------------------------------------- # Input dirs, names, files #--------------------------------------------------------------------- OUTPUT_ROOT := output/ TITLE_NAME := TestProj ifdef DEBUG TITLE_NAME += _DEBUG else ifdef RELEASE TITLE_NAME += _RELEASE endif endif # Include …

16
列出GNU make中包含在其定义中包含变量的目标/目标
我有一个相当大的makefile,它通过计算变量的名称来动态创建多个目标。(例如foo $(VAR):$(PREREQS))。gnu make在扩展了这些变量之后,是否可以说服他们吐出目标列表? 我希望能够获取任意makefile的目标。我正在尝试为我的shell写一个完成函数。
100 makefile  gnu-make 

2
如何在Makefile中使用Shell命令
我正在尝试ls在其他命令(例如echo,rsync)中使用的结果: all: <Building, creating some .tgz files - removed for clarity> FILES = $(shell ls) echo $(FILES) 但是我得到: make FILES = Makefile file1.tgz file2.tgz file3.tgz make: FILES: No such file or directory make: *** [all] Error 1 我已经尝试使用echo $$FILES,echo ${FILES}并且echo $(FILES),没有运气。
99 bash  makefile  echo 

10
Makefile,标头依赖性
假设我有一个带有规则的makefile %.o: %.c gcc -Wall -Iinclude ... 每当头文件更改时,我都希望重建* .o。无论何时/include更改任何头文件,都不必重建依赖关系列表,而必须重建目录中的所有对象。 我想不出一种改变规则以适应这一需求的好方法,我愿意提出建议。如果不需要对标题列表进行硬编码,则可获得加分

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.