【发布时间】:2014-11-06 14:42:30
【问题描述】:
我的文件结构如下:
├── Generator/
│ ├── output/
│ └── script.py
│
└── FinalProgram/
├── build/
├── src/
│ └── main.cpp
├── include/
│ └── MyClass.h
└── CMakeLists.txt
Generator/script.py 文件是在Generator/output 文件夹中生成 c++ 文件的脚本。该脚本可以使用两个不同的参数(SimA 和 SimB)启动,每个参数生成一组不同的文件。
另一方面,FinalProgram 需要使用那组生成的文件,所以每次我想用SimA 组文件编译FinalProgram 时,我都必须
cd Generator
./script.py SimA
cp output/*.cpp ../FinalProgram/src
cp output/*.h ../FinalProgram/include
cd ../FinalProgram/build && cmake ..
make
我想要的是能够打字
make SimA
或者
make SimB
所以一切都会自动发生。在这两种情况下可执行文件必须相同,所以显然我不能有两个不同的add_executable 块。我想我应该创建两个add_custom_target 块,一个用于每个可能的值,在那里完成所有工作,最后调用编译所有内容的目标。因此,真正的问题是,我如何在 add_custom_target 块内运行另一个目标?当然,我想我可以使用
COMMAND make
但是……这让我哭了。没有更好的办法吗?
【问题讨论】:
-
我对你的要求有点困惑。为什么你可以只使用 add_custom_command 设置文件级别的依赖关系,然后添加一个 add_custom_target 并使用 cmake.org/cmake/help/v3.0/command/add_dependencies.html 作为顶级目标?
-
为了澄清,您应该列出所有(可能是简化的)输入、输出和依赖项,您可能就可以根据这些编写脚本。
-
我已经重新表述了整个问题,也许现在更清楚了。