Hi,

I am porting my qmake project to cmake. So far it all goes well, but I have the following problem when hitting "build" from within qtcreator as opposed to manually running Cmake.

My project links to several packages provided by the vcpkg manager, which integrates well with cmake.
When i manually configure and compile my project with "cmake --build .", then cmake copies the .dll files from the vcpkg-libraries correctly to the build dir.
But this does not happen when I hit "build" in QtCreator. The CMakeLists.txt is the exact same.

Here is my CMakeFile. It's basically the default one generated by QtCreator for a widget app.
The second line provides the vcpkg integration, and I then link to the library "capstone_dll" installed in vcpkg.


Qt Code:
  1. cmake_minimum_required(VERSION 3.5)
  2.  
  3. set(CMAKE_TOOLCHAIN_FILE "C:/Users/memem/vcpkg/scripts/buildsystems/vcpkg.cmake")
  4.  
  5. project(widgetcmake VERSION 0.1 LANGUAGES CXX)
  6.  
  7. set(CMAKE_INCLUDE_CURRENT_DIR ON)
  8.  
  9. set(CMAKE_AUTOUIC ON)
  10. set(CMAKE_AUTOMOC ON)
  11. set(CMAKE_AUTORCC ON)
  12.  
  13. set(CMAKE_CXX_STANDARD 11)
  14. set(CMAKE_CXX_STANDARD_REQUIRED ON)
  15.  
  16. add_compile_definitions(QT_NO_KEYWORDS)
  17.  
  18.  
  19. # QtCreator supports the following variables for Android, which are identical to qmake Android variables.
  20. # Check https://doc.qt.io/qt/deployment-android.html for more information.
  21. # They need to be set before the find_package( ...) calls below.
  22.  
  23. #if(ANDROID)
  24. # set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android")
  25. # if (ANDROID_ABI STREQUAL "armeabi-v7a")
  26. # set(ANDROID_EXTRA_LIBS
  27. # ${CMAKE_CURRENT_SOURCE_DIR}/path/to/libcrypto.so
  28. # ${CMAKE_CURRENT_SOURCE_DIR}/path/to/libssl.so)
  29. # endif()
  30. #endif()
  31.  
  32. find_package(QT NAMES Qt6 Qt5 COMPONENTS Widgets REQUIRED)
  33. find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Widgets REQUIRED)
  34. find_package(capstone)
  35.  
  36.  
  37. include_directories(C:/Users/memem/vcpkg/installed/x64-windows/include)
  38. link_directories(C:/Users/memem/vcpkg/installed/x64-windows/lib)
  39.  
  40. set(PROJECT_SOURCES
  41. main.cpp
  42. mainwindow.cpp
  43. mainwindow.h
  44. mainwindow.ui
  45. )
  46.  
  47. if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
  48. qt_add_executable(widgetcmake
  49. MANUAL_FINALIZATION
  50. ${PROJECT_SOURCES}
  51. )
  52. else()
  53. if(ANDROID)
  54. add_library(widgetcmake SHARED
  55. ${PROJECT_SOURCES}
  56. )
  57. else()
  58. add_executable(widgetcmake
  59. ${PROJECT_SOURCES}
  60. )
  61. endif()
  62. endif()
  63.  
  64. target_link_libraries(widgetcmake PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)
  65. target_link_libraries(widgetcmake PRIVATE capstone_dll)
  66.  
  67.  
  68. set_target_properties(widgetcmake PROPERTIES
  69. MACOSX_BUNDLE_GUI_IDENTIFIER my.example.com
  70. MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
  71. MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
  72. )
  73.  
  74. if(QT_VERSION_MAJOR EQUAL 6)
  75. qt_finalize_executable(widgetcmake)
  76. endif()
To copy to clipboard, switch view to plain text mode