Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Makefile 如何通过make文件创建条件构建?_Makefile_Gnu Make - Fatal编程技术网

Makefile 如何通过make文件创建条件构建?

Makefile 如何通过make文件创建条件构建?,makefile,gnu-make,Makefile,Gnu Make,如何通过向make文件传递命令行选项来创建选择性对象 我的项目结构如下 Makefile src/ include/ test/ 主文件在测试DIR和其他C++测试代码文件,如ABC1.CC ABC2.CC等,也在测试中。 我想通过向make文件传递适当的参数,将选择性的abcX.cc文件构建到abcX.o文件中 我不想用我的品牌作为 $ make ABC1=1 ABC2=1, 并将ABC变量放入make文件的ifeq中 像 有一种实用的方法吗?如果我正确理解了这个问题,您希望创建相同的二进

如何通过向make文件传递命令行选项来创建选择性对象

我的项目结构如下

Makefile
src/
include/
test/
<>主文件在测试DIR和其他C++测试代码文件,如ABC1.CC ABC2.CC等,也在测试中。 我想通过向
make
文件传递适当的参数,将选择性的abcX.cc文件构建到abcX.o文件中

我不想用我的品牌作为

$ make ABC1=1 ABC2=1,
并将ABC变量放入make文件的ifeq中


有一种实用的方法吗?

如果我正确理解了这个问题,您希望创建相同的二进制文件,但通过提供一个选项来使用不同的源文件

对于此特定场景,只需使用a来确定最终目标:

# Create a pattern target, let's give it a name such that
# the pattern is obvious, such as ABC/<num>
.PHONY: ABC/%
ABC/%: main.cc $(TESTPATH)/abc%.cc
     g++ -o modtest $< # etc...
另一方面,如果您希望生成单独的二进制文件,这是相同的交易,但是让虚假目标依赖于最终的二进制文件。如果模式相同,则可能是这样:

# Trigger the build for modtest-<num> with the target ABC/%
.PHONY: ABC/%
ABC/%: modtest-%

如果我正确理解了这个问题,那么您希望创建相同的二进制文件,但通过提供一个选项来使用不同的源文件

对于此特定场景,只需使用a来确定最终目标:

# Create a pattern target, let's give it a name such that
# the pattern is obvious, such as ABC/<num>
.PHONY: ABC/%
ABC/%: main.cc $(TESTPATH)/abc%.cc
     g++ -o modtest $< # etc...
另一方面,如果您希望生成单独的二进制文件,这是相同的交易,但是让虚假目标依赖于最终的二进制文件。如果模式相同,则可能是这样:

# Trigger the build for modtest-<num> with the target ABC/%
.PHONY: ABC/%
ABC/%: modtest-%

您希望如何选择要使用的文件?分组?个人姓名?makefile的其余部分是什么样子的?
makeabc1.o
?在没有看到问题中的
Makefile
之前,真的没有办法回答这个问题……这个问题不清楚。你能给出一个清晰的例子,说明你希望如何调用Make,以及你希望它做什么吗?我的问题很简单-我在testdir中有25个源文件,其中一个是main.cc,另一个是abc1.cc。。。到abc24.cc。我的目标是从Jenkins的下拉列表(abcX列表)中选择模块名称,然后根据选择创建所选对象,然后将其链接到创建目标。帮助我…如何为此类场景创建make文件。您希望如何选择要使用的文件?分组?个人姓名?makefile的其余部分是什么样子的?
makeabc1.o
?在没有看到问题中的
Makefile
之前,真的没有办法回答这个问题……这个问题不清楚。你能给出一个清晰的例子,说明你希望如何调用Make,以及你希望它做什么吗?我的问题很简单-我在testdir中有25个源文件,其中一个是main.cc,另一个是abc1.cc。。。到abc24.cc。我的目标是从Jenkins的下拉列表(abcX列表)中选择模块名称,然后根据选择创建所选对象,然后将其链接到创建目标。帮助我…如何为此类场景创建make文件。您希望如何选择要使用的文件?分组?个人姓名?makefile的其余部分是什么样子的?
makeabc1.o
?在没有看到问题中的
Makefile
之前,真的没有办法回答这个问题……这个问题不清楚。你能给出一个清晰的例子,说明你希望如何调用Make,以及你希望它做什么吗?我的问题很简单-我在testdir中有25个源文件,其中一个是main.cc,另一个是abc1.cc。。。到abc24.cc。我的目标是从Jenkins的下拉列表(abcX列表)中选择模块名称,然后根据选择创建所选对象,然后将其链接到创建目标。帮助我…如何为这样的场景创建make文件。
# Set target specific variables to customize what to be built
ABC/1: OBJECTS=abc1 foo bar
ABC/2: OBJECTS=abc2
ABC/%: OBJECTS=% main