Linux 在项目中输出二进制文件';使用cmake创建s根bin子文件夹
我目前正在做一个BF口译员项目。我决定使用CMake,它工作正常。 我选择了一个源代码外构建,如下所示:Linux 在项目中输出二进制文件';使用cmake创建s根bin子文件夹,linux,cmake,Linux,Cmake,我目前正在做一个BF口译员项目。我决定使用CMake,它工作正常。 我选择了一个源代码外构建,如下所示: + Project root | +-- src/ +-- bin/ +-- build/ <- holds the "rubbish" generated by CMake when generating the Makefile +-- CMakeLists.txt 在CMakeLists.txt中,我添加了以下行: SET(EXECUTABLE_OUTPUT_PATH ${PR
+ Project root
|
+-- src/
+-- bin/
+-- build/ <- holds the "rubbish" generated by CMake when generating the Makefile
+-- CMakeLists.txt
在CMakeLists.txt中,我添加了以下行:
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
但是,我发现它在build/bin文件夹中输出二进制文件,因此我将该行编辑为:
SET(EXECUTABLE_OUTPUT_PATH "../bin/"
它工作得很好,但它,嗯,有点难看。有没有什么“干净”的方法可以做到这一点,也就是不用假设项目的结构,而是使用类似于set(EXECUTABLE\u OUTPUT\u PATH${project\u ROOT}/bin”)
?
提前感谢您的回复,并对我可能犯的任何英语错误表示歉意,因为英语不是我的第一语言。您可以设置变量来实现这一点,例如:
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin)
基本上,您要查找的${PROJECT\u ROOT}
变量是,或。每个变量的含义稍有不同,但对于基本项目,它们可能都指向同一个目录
请注意,要使CMAKE_RUNTIME_OUTPUT_目录
变量生效,必须在创建目标之前设置该变量,即在CMakeLists.txt中的add_executable
调用之前
还要注意的是,像MSVC这样的多配置生成器仍然会将每个配置目录追加到此项目根/bin
文件夹
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin)