我目前正在进行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")
的东西?
提前感谢您的回复,并对我可能犯的任何英语错误表示歉意,因为英语不是我的第一语言。
答案 0 :(得分:3)
您可以设置变量CMAKE_RUNTIME_OUTPUT_DIRECTORY
来实现此目的 - 例如:
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin)
基本上,您要查找的${PROJECT_ROOT}
变量为PROJECT_SOURCE_DIR
,CMAKE_SOURCE_DIR
或CMAKE_CURRENT_SOURCE_DIR
。每个都有一个略有不同的含义,但对于一个基本项目,这些都可以指向同一个目录。
请注意,要使 另请注意,MSVC等多配置生成器仍会将每个配置目录附加到此CMAKE_RUNTIME_OUTPUT_DIRECTORY
变量生效,必须在创建目标之前设置,即在CMakeLists.txt中调用add_executable
之前。< / p>
project root/bin
文件夹。