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.
cmake_minimum_required(VERSION 3.5)
set(CMAKE_TOOLCHAIN_FILE "C:/Users/memem/vcpkg/scripts/buildsystems/vcpkg.cmake")
project(widgetcmake VERSION 0.1 LANGUAGES CXX)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
add_compile_definitions(QT_NO_KEYWORDS)
# QtCreator supports the following variables for Android, which are identical to qmake Android variables.
# Check https://doc.qt.io/qt/deployment-android.html for more information.
# They need to be set before the find_package( ...) calls below.
#if(ANDROID)
# set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android")
# if (ANDROID_ABI STREQUAL "armeabi-v7a")
# set(ANDROID_EXTRA_LIBS
# ${CMAKE_CURRENT_SOURCE_DIR}/path/to/libcrypto.so
# ${CMAKE_CURRENT_SOURCE_DIR}/path/to/libssl.so)
# endif()
#endif()
find_package(QT NAMES Qt6 Qt5 COMPONENTS Widgets REQUIRED)
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Widgets REQUIRED)
find_package(capstone)
include_directories(C:/Users/memem/vcpkg/installed/x64-windows/include)
link_directories(C:/Users/memem/vcpkg/installed/x64-windows/lib)
set(PROJECT_SOURCES
main.cpp
mainwindow.cpp
mainwindow.h
mainwindow.ui
)
if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
qt_add_executable(widgetcmake
MANUAL_FINALIZATION
${PROJECT_SOURCES}
)
else()
if(ANDROID)
add_library(widgetcmake SHARED
${PROJECT_SOURCES}
)
else()
add_executable(widgetcmake
${PROJECT_SOURCES}
)
endif()
endif()
target_link_libraries(widgetcmake PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)
target_link_libraries(widgetcmake PRIVATE capstone_dll)
set_target_properties(widgetcmake PROPERTIES
MACOSX_BUNDLE_GUI_IDENTIFIER my.example.com
MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
)
if(QT_VERSION_MAJOR EQUAL 6)
qt_finalize_executable(widgetcmake)
endif()
cmake_minimum_required(VERSION 3.5)
set(CMAKE_TOOLCHAIN_FILE "C:/Users/memem/vcpkg/scripts/buildsystems/vcpkg.cmake")
project(widgetcmake VERSION 0.1 LANGUAGES CXX)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
add_compile_definitions(QT_NO_KEYWORDS)
# QtCreator supports the following variables for Android, which are identical to qmake Android variables.
# Check https://doc.qt.io/qt/deployment-android.html for more information.
# They need to be set before the find_package( ...) calls below.
#if(ANDROID)
# set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android")
# if (ANDROID_ABI STREQUAL "armeabi-v7a")
# set(ANDROID_EXTRA_LIBS
# ${CMAKE_CURRENT_SOURCE_DIR}/path/to/libcrypto.so
# ${CMAKE_CURRENT_SOURCE_DIR}/path/to/libssl.so)
# endif()
#endif()
find_package(QT NAMES Qt6 Qt5 COMPONENTS Widgets REQUIRED)
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Widgets REQUIRED)
find_package(capstone)
include_directories(C:/Users/memem/vcpkg/installed/x64-windows/include)
link_directories(C:/Users/memem/vcpkg/installed/x64-windows/lib)
set(PROJECT_SOURCES
main.cpp
mainwindow.cpp
mainwindow.h
mainwindow.ui
)
if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
qt_add_executable(widgetcmake
MANUAL_FINALIZATION
${PROJECT_SOURCES}
)
else()
if(ANDROID)
add_library(widgetcmake SHARED
${PROJECT_SOURCES}
)
else()
add_executable(widgetcmake
${PROJECT_SOURCES}
)
endif()
endif()
target_link_libraries(widgetcmake PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)
target_link_libraries(widgetcmake PRIVATE capstone_dll)
set_target_properties(widgetcmake PROPERTIES
MACOSX_BUNDLE_GUI_IDENTIFIER my.example.com
MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
)
if(QT_VERSION_MAJOR EQUAL 6)
qt_finalize_executable(widgetcmake)
endif()
To copy to clipboard, switch view to plain text mode
Bookmarks