首页 文章
  • 2 votes
     answers
     views

    在gnu make文件中包含被忽略的路径

    makefile包含在下面 . 它只是一个很长的目标文件列表和两个目标 . 问题似乎是第一个目标忽略了$(INC) . 例如,输出以“g -c -o main.o main.cpp”而不是“g -I / usr / home / jrm / tmp / proteus_beta -c -o main.o main.cpp”开头 . TIA PROG = proteus # list of obj...
  • 651 votes
     answers
     views

    GNU Makefile变量赋值=,?=,:=和=之间有什么区别?

    任何人都可以清楚地解释变量赋值在Makefile中是如何工作的 . 有什么区别: VARIABLE = value VARIABLE ?= value VARIABLE := value VARIABLE += value 我已经阅读了GNU Make _491214中的section对我有意义 .
  • 0 votes
     answers
     views

    制作:复制符号

    我正在写一个c程序 . 它包含以下文件: 啊 #pragma once extern int a; 交流转换器 int a = 1; B.h #pragma once #include "A.h" 公元前 #include "B.h" makefile看起来就像那样 生成文件: objects = A.o B.o main : $(objects) ...
  • 0 votes
     answers
     views

    尝试执行'cc1'时出错,修复的选项有限

    我试图在Debian Linux系统上编译一个文件,我相信gcc的配置有问题 . $ gcc test.c -o test -pthread -v Using built-in specs. COLLECT_GCC=gcc Target: i486-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Debian 4....
  • 9 votes
     answers
     views

    GNU Make . 范围限制为单个Makefile的变量

    我尝试在我当前的项目中实现一个非递归的make构建系统 . 我挣扎的是变量范围 . 目标特定变量不符合我的需要,因为通常变量定义目标而不是先决条件 . 我需要的是: Makefile1: SOMEVAR := original_value include Makefile2 $(warning $(SOMEVAR)) Makefile2: #some magic here to do what ...
  • 2 votes
     answers
     views

    GNU make总是将非文件目标视为重制(可能的bug?)

    Make 是否应该重新制作具有先决条件的目标,但不指向文件且没有配方?或者,如果需要重新制作一个或多个先决条件, Make 是否只会重新制作此类目标? 例如,在下面显示的Makefile中,我添加了一个名为 objects 的目标,该目标具有先决条件,但未指向文件 . 主要目标称为 program ,它取决于 objects (以及可能的其他先决条件) . file1 file2 file3: ;...
  • 157 votes
     answers
     views

    如何为调试和发布版本配置makefile?

    我的项目有以下makefile,我想为发布和调试版本配置它 . 在我的代码中,我有很多 #ifdef DEBUG 宏,所以这只是设置这个宏并将 -g3 -gdwarf2 标志添加到编译器的问题 . 我怎样才能做到这一点? $(CC) = g++ -g3 -gdwarf2 $(cc) = gcc -g3 -gdwarf2 all: executable executable: CommandPa...
  • 266 votes
     answers
     views

    如何在makefile中编写'cd'命令?

    例如,我的makefile中有类似的东西: all: cd some_directory 但是当我输入 make 时,我只看到'cd some_directory',就像 echo 命令一样 .
  • 99 votes
     answers
     views

    如何从另一个Makefile调用Makefile?

    我收到一些意外的结果从另一个调用一个makefile . 我有两个makefile,一个叫 /path/to/project/makefile ,一个叫 /path/to/project/gtest-1.4.0/make/Makefile . 我试图让前者称之为后者 . 在/ path / to / project / makefile中,我有 dev: $(OBJ_FILES) $(CPP...
  • 147 votes
     answers
     views

    如何获取Makefile的当前相对目录?

    我在app特定目录中有几个Makefile,如下所示: /project1/apps/app_typeA/Makefile /project1/apps/app_typeB/Makefile /project1/apps/app_typeC/Makefile 每个Makefile在此路径中包含一个.inc文件: /project1/apps/app_rules.inc 在app_rules.i...
  • 119 votes
     answers
     views

    GNU Make中CPPFLAGS和CXXFLAGS之间的区别

    GNU Make中CPPFLAGS和CXXFLAGS之间有什么区别?
  • 98 votes
     answers
     views

    列出GNU中的目标/目标,使其在定义中包含变量

    我有一个相当大的makefile,它通过计算变量中的名称来动态创建多个目标 . (例如foo $(VAR):$(PREREQS)) . 有没有什么方法可以让gnu make在扩展这些变量之后吐出一系列目标? 我希望能够获得aribitrary makefile的目标 . 我正在尝试为我的shell编写一个完成函数 .
  • 3 votes
     answers
     views

    Makefile:隐式规则先决条件不起作用?

    如果我使用先决条件(但没有配方)创建隐式规则,那么依赖性似乎不受尊重 . 另一方面,如果我在定义配方的块中定义先决条件,或者如果我指定了特定目标实例的依赖关系,它似乎确实有效 . 我有以下Makefile(GNU make 3.81) all: foo.a foo.b bar.b bar.c dep1: @echo "running $@" %.a: dep1 ...
  • 12 votes
     answers
     views

    GNU Make:警告:忽略目标`xxx'的旧命令

    你能帮我理解GNU Make(版本3.81)如何处理简单的Makefile吗?这是文件: .PHONY: a b c e f a : b c @echo "> a(b,c)" e : a @echo "> e(a)" e : f @echo "> e(f)" f : @echo &quot...
  • 2 votes
     answers
     views

    GNU根据非模式文件制作模式规则

    在GNU Make中,依赖于非模式文件的模式规则的语义究竟是什么? 我在Makefile中有以下代码段 . 当 foo.a 存在时,当调用 make foo.b 时,GNU Make似乎不会创建 foo.b . .SUFFIXES: %.b: move_a_to_b.artifact move_a_to_b.artifact: mv foo.a foo.b t...
  • 0 votes
     answers
     views

    gnu make - 强制退出而不删除目标

    我正在逐步验证我的构建输出,我希望能够在执行给定的配方后退出 . 如果原始配方是 $(HEADER_BUILD)/mpversion.h: FORCE | $(HEADER_BUILD) $(Q)$(PYTHON) $(PY_SRC)/makeversionhdr.py $@ 我希望能够在最后添加一行,就像这样 $(HEADER_BUILD)/mpversion.h: FORCE | $...
  • 0 votes
     answers
     views

    GNU Make:具有.INTERMEDIATE目标的多输出规则不能与生成的包含的makefile结合使用

    在我的项目中,我有一个同时产生多个输出文件的动作 . 其中一个包含编译目标等规则 . 这是我想要运行的一个小例子makefile . SHELL = cmd.exe rules_InputFiles = makefile rules_OutputFiles = exec\rules.mk exec\other.mk $(rules_OutputFiles): exec\rules.temp ....
  • 5 votes
     answers
     views

    当有人运行`make`时检测(非)GNU Make

    我有一个项目,其makefile使用GNU Make独有的功能 . 遗憾的是,在运行 make 时,我们必须支持GNU make仍然不是默认值的平台 . 我的一位同事被这种方式所困扰,当一个非GNU make实现无法正确构建我们的代码时(它将一个自动变量扩展为一个空字符串) . 我希望通过生成显式错误消息来防止再次发生这种情况 . What can I write in a Makefile to...
  • 2 votes
     answers
     views

    Windows下的GNU Make:检查PATH中的cygwin

    我一直在Windows环境中组装一个makefile供我的团队使用 . 我决定使用MinGW版本的make for Windows . 我将该可执行文件及其依赖项放入存储库位置,该位置应位于每个人的PATH变量中 . 为简单起见,可执行文件重命名为“make.exe” . 然后我意识到,当有人在他们的路径中有cygwin的bin文件夹时,我必须考虑到这种情况 . echo,rmdir和mkdir...
  • 7 votes
     answers
     views

    如何在GNU make中将目标设为“私有”仅供内部使用?或者:如何最好地执行特定于目标的变量值?

    我在makefile中有一些辅助目标,我想在makefile中限制内部或"private"使用(仅限) . 也就是说,我希望能够在makefile中将这些目标指定为依赖项,但我想阻止将目标从命令行指定为构建目标 . 有点类似于OOP的 private 函数:目标是单独构建的有害(或根本没有意义) . 我希望有一个特殊目标 .HIDDEN 或 .PRIVATE 或类似的东西,类似...
  • 0 votes
     answers
     views

    通配符到变量到逗号连接的字符串

    我正在使用makefile来控制软件管道 . 我需要传递一个以逗号分隔的目录列表参数,也就是说 --dirs output/a,output/b,output/c 哪个是未知的 . 我想做的事情如下: dirs = output/* dirString = ",".join(dirs) 这可能吗?
  • 3 votes
     answers
     views

    如何使'make'附加额外的标准FLAGS

    我有一个Makefile(实际上并不在我的控制之下),它定义了隐式规则使用的一些变量: CPPFLAGS := $(CPPFLAGS) -I../../../../modules CXXFLAGS += -std=c++11 现在,我想为这些变量添加一些额外的标志作为make变量 . 就像是: make CPPFLAGS="-D_FORTIFY_SOURCE=2" CXXFL...
  • -2 votes
     answers
     views

    GNU make如何管理文件版本控制?

    我正在学习 GNU make . 假设我有 hello_world.c 文件和 Makefile :hello_world.c: #include <stdio.h> int main() { printf("Hello World!\n"...
  • 3 votes
     answers
     views

    gnu将许多文件复制到一个位置

    这个问题在精神上类似于问题2543127 . 我有一个带有头文件列表的gnu makefile . 每个头文件可以位于不同的目录中,例如, HEADERS = $(wildcard *.h) $(wildcard foo/*.h) $(wildcard bar/*.h) 我想让makefile将所有 Headers 复制到include目录 INCDIR = ../include 当调用虚拟目...
  • 13 votes
     answers
     views

    GNU make中的错误:特定于目标的变量不会在隐式规则中扩展吗?

    我一直在设计一个多配置Makefile(一个支持单独的'debug'和'release'目标),并且遇到了一个奇怪的问题,这似乎是GNU make中的一个bug . 当隐式规则中引用这些变量时,GNU make似乎没有正确扩展特定于目标的变量 . 这是一个简化的Makefile,它显示了这个问题: all: @echo specify configuration 'debug' or 'r...
  • 17 votes
     answers
     views

    GNU Make中通配符目标的正确方法

    我试图编写一个Makefile与我的源文件和目标文件分开,我似乎无法找到实现这一目标的正确方法 . 我有两种方法可行,但我希望有人可以指出“正确”的方法来做到这一点 . 我的项目分为 src 和 obj 文件夹,Makefile与这些文件夹处于同一级别 . 第一种方法使用通配符函数在 src 中查找源文件,然后使用文本替换来确定相应的目标文件 . SRC = $(wildcard src/*.cp...
  • 1 votes
     answers
     views

    如何使用gnu-make将文件编译到一个目录路径,该路径是在获取输入目录并在其上应用多个字符串替换后生成的?

    假设我在一些"input" -directories中有一些源文件,我想编译并放入不同的"output" -directories . 要计算输出目录,您所要做的就是获取输入目录并将 src 替换为 obj 和 x/y/x 替换为 u/v/w (双字符串替换) . 例如: g++ -c src/a/x/y/z/b/c/file1.cpp -o obj/a/u...
  • 1 votes
     answers
     views

    GNU递归make - 如何捕获make变量来执行嵌套的makefile

    我有一堆 qmake 生成的makefile,每个makefile都以链式方式调用它们内部的 make (递归 make ) . 我的构建结束后, qmake 生成的makefile都在磁盘上,所以如果我想'replay'一个特定的makefile,你认为我可以在其中一个上调用 make . 错误 . 当我尝试 make -ing one时,它会失败,可能是因为在正常构建期间它通常从调用mak...
  • 28 votes
     answers
     views

    Makefile中的双冒号规则是什么?

    GNU Make手册的4.13节描述了所谓的双冒号规则: 双冒号规则是在目标名称后面用'::'而不是':'编写的规则 . 当同一目标出现在多个规则中时,它们的处理方式与普通规则不同 . 当目标出现在多个规则中时,所有规则必须是相同的类型:所有规则或所有双冒号 . 如果它们是双冒号,则每个都是独立的 . 如果目标比该规则的任何先决条件更旧,则执行每个双冒号规则的命令 . 如果该规则没有先决条件,则...
  • 28 votes
     answers
     views

    依赖于目录下所有文件的Makefile规则(包括在子目录中)

    我的Makefile中的一条规则将整个目录( res/ )压缩为ZIP文件 . 显然,当 res/ 目录下的任何文件发生更改时,需要执行此规则 . 因此,我希望规则将该目录下的所有文件作为先决条件 . 我该如何实施这条规则? 在Bash with the globstar option enabled中,您可以使用通配符模式 res/**/* 获取该目录中所有文件的列表 . 但是,如果将其指定为M...

热门问题