使用cmake在项目的根bin子文件夹中输出二进制文件

时间:2013-03-31 11:15:41

标签: linux cmake

我目前正在进行BF翻译项目。我决定使用CMake,它运行正常。 我选择了一个源外构建,遵循以下树:

+ Project root
|
+-- src/
+-- bin/
+-- build/ <- holds the "rubbish" generated by CMake when generating the Makefile
+-- CMakeLists.txt

当我想构建项目时,我从项目的根文件夹中运行:

cd build
cmake ..
make

在CMakeLists.txt中,我添加了以下行:

SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)

但是,我发现它在build / bin文件夹中输出了二进制文件,因此我将该行编辑为:

SET(EXECUTABLE_OUTPUT_PATH "../bin/"

它工作得非常好,但它是,恕我直言,有点难看。有没有“干净”的方法来做这件事,而不是假设项目的结构,而是使用类似set(EXECUTABLE_OUTPUT_PATH ${PROJECT_ROOT}/bin")的东西? 提前感谢您的回复,并对我可能犯的任何英语错误表示歉意,因为英语不是我的第一语言。

1 个答案:

答案 0 :(得分:3)

您可以设置变量CMAKE_RUNTIME_OUTPUT_DIRECTORY来实现此目的 - 例如:

set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin)

基本上,您要查找的${PROJECT_ROOT}变量为PROJECT_SOURCE_DIRCMAKE_SOURCE_DIRCMAKE_CURRENT_SOURCE_DIR。每个都有一个略有不同的含义,但对于一个基本项目,这些都可以指向同一个目录。

请注意,要使CMAKE_RUNTIME_OUTPUT_DIRECTORY变量生效,必须在创建目标之前设置,即在CMakeLists.txt中调用add_executable之前。< / p>

另请注意,MSVC等多配置生成器仍会将每个配置目录附加到此project root/bin文件夹。