# Copy the output dll files from library1 and library2 to current module's exe path. add_custom_command(TARGET${PROJECT_NAME} POST_BUILD COMMAND${CMAKE_COMMAND} -E copy $<TARGET_RUNTIME_DLLS:${PROJECT_NAME}> $<TARGET_FILE_DIR:${PROJECT_NAME}>)
这个功能必须cmake版本高于3.21以上才支持
17. QT部署(windeployqt)
1 2 3 4
if (WIN32) add_custom_command(TARGET${PROJECT_NAME} POST_BUILD COMMAND"$ENV{Qt5_DIR}/bin/windeployqt.exe""$<TARGET_FILE:${PROJECT_NAME}>") endif ()
需要定义Qt5_DIR环境变量
18. CMake使用MSVC时支持UTF-8
1 2 3 4
if (WIN32) add_compile_options("$<$<C_COMPILER_ID:MSVC>:/utf-8>") add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/utf-8>") endif ()
19. CMake 静态库与共享库生成
新建XXX_global.h文件,定义XXX_EXPORT
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
#ifndef XXX_GLOBAL_H #define XXX_GLOBAL_H
#include<QtGlobal>
// Define XXX_SHARED_LIB in you application if you want to link against the // sharted version of AppLog
if (BUILD_SHARED_LIBS) target_compile_definitions(${PROJECT_NAME} PUBLIC -DXXX_SHARED_LIB) target_compile_definitions(${PROJECT_NAME} PRIVATE -DXXX_LIBRARY) endif()