Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/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 通过传递命令行参数在CMake中进行选择性编译_Makefile_Cmake - Fatal编程技术网

Makefile 通过传递命令行参数在CMake中进行选择性编译

Makefile 通过传递命令行参数在CMake中进行选择性编译,makefile,cmake,Makefile,Cmake,我有三个程序,例如:program_1.cpp、program_2.cpp和program_3.cpp 到目前为止,我有单独的makefile来构建这些程序 我想以下面的方式实现这一点 cmake program_1 program_1.cpp必须编译 cmake program_2 program_2.cpp必须编译 cmake program_3 program_3.cpp必须编译 你能告诉我实现这一目标的方法吗 [更新]: 我正在使用一个shell脚本来编译程序。 比如说 bash bui

我有三个程序,例如:program_1.cpp、program_2.cpp和program_3.cpp

到目前为止,我有单独的makefile来构建这些程序

我想以下面的方式实现这一点

cmake program_1 program_1.cpp必须编译 cmake program_2 program_2.cpp必须编译 cmake program_3 program_3.cpp必须编译 你能告诉我实现这一目标的方法吗

[更新]:

我正在使用一个shell脚本来编译程序。 比如说

bash build_script.sh build 这将编译文件程序_1.cpp并生成可执行文件

同样,我想实施以下方法

bash build_script.sh build program_1-build program_1.cpp bash build_script.sh build program_2-build program_2.cpp bash build_script.sh build program_3-build program_3.cpp
假设您打算编译三个不同的目标,您可以有一个简单的makefile:

.PHONY program_1:
program_1:
    gcc -o program_1 program_1.cpp

.PHONY program_2:
program_2:
    gcc -o program_2 program_2.cpp

.PHONY program_3:
program_3:
    gcc -o program_3 program_3.cpp
然后你可以简单地做:

make program_2

只编译程序2。但是,这与cmake无关。

假设您要编译三个不同的目标,您可以有一个简单的makefile:

.PHONY program_1:
program_1:
    gcc -o program_1 program_1.cpp

.PHONY program_2:
program_2:
    gcc -o program_2 program_2.cpp

.PHONY program_3:
program_3:
    gcc -o program_3 program_3.cpp
然后你可以简单地做:

make program_2

只编译程序2。但是,这与cmake无关。

生成makefiles时,cmake会为每个add_可执行调用创建一个make目标,因此只需在cmake生成的makefiles上使用make目标:

CMakeLists.txt:

...
add_executable(program_1 prog1.cpp)
add_executable(program_2 prog2.cpp)
add_executable(program_3 prog3.cpp)
然后到了建造的时候:

cmake path/to/source/dir
make program_1

生成makefiles时,cmake为每个add_可执行调用创建一个make目标,因此只需在cmake生成的makefiles上使用make目标:

CMakeLists.txt:

...
add_executable(program_1 prog1.cpp)
add_executable(program_2 prog2.cpp)
add_executable(program_3 prog3.cpp)
然后到了建造的时候:

cmake path/to/source/dir
make program_1

需要明确的是:是否希望cmake有条件地只为一个程序生成makefiles,或者你想从cmake生成的makefiles一次只编译一个程序吗?这两种方法都可以,假设当我给cmake program_1时,一次只运行一个程序……只是想澄清一下:你想让cmake有条件地只为一个程序生成makefiles吗,或者你想从cmake生成的makefiles一次只编译一个程序吗?假设在我给cmake program_1时,一次只运行一个程序,这两种方法都应该很好…谢谢你的回答。我会试试这个方法,让你知道。谢谢你的回答。将尝试该方法并让您知道。谢谢您的步骤。我清楚地了解了如何在编译时选择特定的程序。我会更新这个问题。请检查。谢谢您的步骤。我清楚地了解了如何在编译时选择特定的程序。我会更新这个问题。请查收。