我的理解是CMAKE_CURRENT_BINARY_DIR
應該指向當前CMakeLists.txt文件的二進制文件所在的目錄。但是,這似乎並非如此。爲什麼不把二進制文件放在CMAKE_CURRENT_BINARY_DIR中?
考慮這個文件結構:
CMakeTest
+- CMakeLists.txt
+- main.cpp
的CMakeLists.txt
cmake_minimum_required(VERSION 3.2)
add_executable(CMakeTest main.cpp)
message(STATUS "CMAKE_CURRENT_BINARY_DIR = ${CMAKE_CURRENT_BINARY_DIR}")
的main.cpp
#include <iostream>
int main() {
std::cout << "Hello, World!";
return 0;
}
在(Windows)中的命令行,我跑下列 命令:
md build
cd build
cmake .. -G "Visual Studio 14 2015"
cmake --build .
第一cmake
命令打印(除其他事項外)行
CMAKE_CURRENT_BINARY_DIR = X是:/ dev /項目/ CMakeTest /建造
所以我期望由此產生的二進制文件CMakeTest.exe在那裏結束。實際上,它放置在X:/ dev/projects/CMakeTest/build/Debug中。
爲什麼不是將二進制文件放入CMAKE_CURRENT_BINARY_DIR
,而是放在一個子目錄中?是否有任何CMake變量告訴我該子目錄是什麼?
編輯:
我並不想改變其中二進制文件放置的目錄。我試圖確定吧。原因是這樣的:
在構建期間,會在與可執行文件相同的目錄中創建許多其他資源文件。 (這部分工作。)我想使用install(FILES, ...)
命令然後將這些文件添加到生成的包。所以我需要將二進制文件的實際路徑傳遞到install(FILES, ...)
。
我想這是MSVC發生器的一個缺點。 – arrowd
我相信這是一件好事..我的意思是調試和釋放可執行文件不兼容,並且可能將其命名爲最好將它們保存在單獨的文件夾中。請記住,MSVC默認有4種配置。 – drescherjm
@arrowd:它似乎不是一個生成器問題。在OS X上使用'Xcode'生成器具有相同的結果。 –