gpt4 book ai didi

c++ - 如何最好地为 Visual Studio 2017 构建的 CMake C++ 项目设置输出目录?

转载 作者:太空宇宙 更新时间:2023-11-04 15:30:05 28 4
gpt4 key购买 nike

我使用 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 文件一样,让输出目录位于源目录中的最佳方法是什么?

最佳答案

Visual Studio 是一个多配置 生成器。也就是说,它为项目配置一次进行多个配置。因此,当使用此类生成器时,变量 CMAKE_BUILD_TYPE不包含配置名称,它只是空的。

默认情况下,使用多配置生成器,变量如 CMAKE_LIBRARY_OUTPUT_DIRECTORY自动 appended with per-configuration subdirectory .有两种方法可以处理这种行为:

  1. 使用 generator expressions定义变量时。该表达式可以有条件地求值,具体取决于配置类型。例如:

     # 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}>")
  2. 使用 _<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})

关于c++ - 如何最好地为 Visual Studio 2017 构建的 CMake C++ 项目设置输出目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56477504/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com