Проект CMake с ссылками vcpkg на qt всегда в отладке с Visual Studio - PullRequest
1 голос
/ 28 июня 2019

У меня есть следующий проект 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"
        }
      ]
    }
  ]
}

Итак, я использую Qt, установленный с vcpkg.

Если я встраиваю отладку в Visual Studio, то все в порядке, в то время как если я встраиваю в выпуск, выбрав x64-Release в конфигурации Visual Studio, он строит, но затем проект не запускается, потому что он ищет библиотеки отладки Qt5 вместо выпуска даже если библиотеки релизов Qt копируются в папку сборки приложения.

Что я должен сделать, чтобы создать проект CMake и встроить свойство release в Visual Studio?

...