![](/img/trans.png)
[英]How to use data breakpoints in Visual Studio 2017, C++, CMake?
[英]How best to set output directory for a CMake C++ project built by Visual Studio 2017?
我使用 Visual Studio 2017 使用 .vcxproj 文件構建 C++ 桌面項目。 我喜歡輸出目錄是項目下面的子目錄的默認行為。 例如:
|-myproj.sln
|-myproj.vcxproj
|-----------------|--x64 --|-- myproj_release --|-- myproj.exe
我現在想使用 CMake 而不是 .vcxproj 來定義構建,這樣我就可以使用 Visual Studio Code 作為 Visual Studio 2017 的替代方案進行構建。
我使用 cmake-converter 將我的 .vcxproj 轉換為 CMake 項目。 生成的 CMakeLists.txt 包含:
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${OUTPUT_DEBUG}")
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${OUTPUT_DEBUG}")
set(CMAKE_EXECUTABLE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${OUTPUT_DEBUG}")
else()
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${OUTPUT_REL}")
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${OUTPUT_REL}")
set(CMAKE_EXECUTABLE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${OUTPUT_REL}")
endif()
當我使用 Visual Studio 2017 打開這個 CMakeLists.txt 並構建它時,它會將可執行文件放在我的用戶目錄的子目錄 CMakeBuilds 中。 我猜這是因為 Visual Studio 2017 正在確定 CMAKE_BINARY_DIR。
與我的 .vcxproj 文件一樣,將輸出目錄置於源目錄中的最佳方法是什么?
我認為我的問題的答案是在 CmakeSettings.json 中修改 buildRoot:
"buildRoot": "${workspaceRoot}\\build\\${name}"
Visual Studio 是一個多配置生成器。 也就是說,它一次為多個配置配置項目。 因此,當使用此類生成器時,變量CMAKE_BUILD_TYPE
不包含配置名稱,它只是空的。
默認情況下,對於多配置生成器,像CMAKE_LIBRARY_OUTPUT_DIRECTORY
這樣的變量會自動附加每個配置的子目錄。 有兩種方法可以處理這種行為:
定義變量時使用生成器表達式。 該表達式可以有條件地計算,具體取決於配置類型。 例如:
# For Debug configuration this will be evaluated to # '${CMAKE_BINARY_DIR}/${OUTPUT_DEBUG}' # For Release configuration this will be evaluated to # '${CMAKE_BINARY_DIR}/${OUTPUT_REL}' set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/$<$<CONFIG:DEBUG>:${OUTPUT_DEBUG}>$<$<CONFIG:RELEASE>:${OUTPUT_REL}>")
使用_<CONFIG>
版本的變量。 例如:
# Output directory for libraries in Debug configuration set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/${OUTPUT_DEBUG}) # Output directory for libraries in Release configuration set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/${OUTPUT_REL})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.