1

我有以下 cmake 项目:

cmake_minimum_required (VERSION 3.10.0)

project (proj)

set (CMAKE_INCLUDE_CURRENT_DIR ON)
set (CMAKE_AUTOMOC ON)
set (CMAKE_AUTORCC ON)

find_package (Qt5Widgets REQUIRED)
find_package (Qt5Gui REQUIRED)

include_directories (${CMAKE_SOURCE_DIR}/src ${CMAKE_CURRENT_SOURCE_DIR})

set (PROJECT_SRC
  main.cpp
  )

add_executable (${PROJECT_NAME} ${PROJECT_SRC})
target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_17)

target_link_libraries(${PROJECT_NAME} Qt5::Widgets Qt5::Gui)

add_custom_command (TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:Qt5::Widgets> $<TARGET_FILE_DIR:${PROJECT_NAME}>)
add_custom_command (TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:Qt5::Gui> $<TARGET_FILE_DIR:${PROJECT_NAME}>)
add_custom_command (TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:Qt5::Core> $<TARGET_FILE_DIR:${PROJECT_NAME}>)

我使用 Visual Studio 2019,并且我有以下 CMake 设置:

{
  "configurations": [
    {
      "name": "x64-Debug",
      "generator": "Ninja",
      "configurationType": "Debug",
      "inheritEnvironments": [
        "msvc_x64_x64"
      ],
      "buildRoot": "${workspaceRoot}/build/vs2019/build-debug",
      "installRoot": "${workspaceRoot}/build/vs2019/install-debug",
      "cmakeCommandArgs": "",
      "buildCommandArgs": "-v",
      "ctestCommandArgs": "",
      "variables": [
        {
          "name": "CMAKE_TOOLCHAIN_FILE",
          "value": "D:/Projects/vcpkg/scripts/buildsystems/vcpkg.cmake"
        },
        {
          "name": "VCPKG_TARGET_TRIPLET",
          "value": "x64-windows"
        }
      ]
    },
    {
      "name": "x64-Release",
      "generator": "Ninja",
      "configurationType": "Release",
      "inheritEnvironments": [
        "msvc_x64_x64"
      ],
      "buildRoot": "${workspaceRoot}/build/vs2019/build-release",
      "installRoot": "${workspaceRoot}/build/vs2019/install-release",
      "cmakeCommandArgs": "",
      "buildCommandArgs": "-v",
      "ctestCommandArgs": "",
      "variables": [
        {
          "name": "CMAKE_TOOLCHAIN_FILE",
          "value": "D:/Projects/vcpkg/scripts/buildsystems/vcpkg.cmake"
        },
        {
          "name": "VCPKG_TARGET_TRIPLET",
          "value": "x64-windows"
        }
      ]
    }
  ]
}

所以我使用安装了vcpkg.

如果我在 Visual Studio 中构建调试一切都可以,而如果我在发布中构建,通过x64-Release在 Visual Studio 配置中选择它构建,但是项目无法启动,因为它寻找 Qt5 调试库而不是发布库,即使 Qt 发布库被复制到应用程序的构建文件夹中。

为了创建 CMake 项目并在 Visual Studio 中构建发布属性,我应该怎么做?

4

0 回答 0