cmake_minimum_required(VERSION 3.5) project(ElaWidgetTools VERSION 2.0.0 LANGUAGES CXX) FILE(GLOB ORIGIN *.h *.cpp) FILE(GLOB PRIVATE private/*.h private/*.cpp) FILE(GLOB DEVELOPER DeveloperComponents/*.h DeveloperComponents/*.cpp) source_group(include FILES ${INCLUDE}) source_group(private FILES ${PRIVATE}) source_group(DeveloperComponents FILES ${DEVELOPER}) set(PROJECT_SOURCES ${ORIGIN} ${PRIVATE} ${DEVELOPER} ${CMAKE_CURRENT_SOURCE_DIR}/ElaWidgetTools.qrc ) option(ELAWIDGETTOOLS_BUILD_STATIC_LIB "Build static library." ON) if (ELAWIDGETTOOLS_BUILD_STATIC_LIB) set(LIB_TYPE "STATIC") else () set(LIB_TYPE "SHARED") endif () if (${QT_VERSION_MAJOR} GREATER_EQUAL 6) qt_add_library(${PROJECT_NAME} ${LIB_TYPE} ${PROJECT_SOURCES} ) else () add_library(${PROJECT_NAME} ${LIB_TYPE} ${PROJECT_SOURCES} ) endif () # target_compile_definitions: 新的添加编译器宏方法 # add_definitions(-DELAWIDGETTOOLS_LIBRARY) target_compile_definitions(ElaWidgetTools PRIVATE ELAWIDGETTOOLS_LIBRARY) # 如果想要静态链接,就要定义编译器宏"ELAWIDGETTOOLS_STATIC_LIB" if (ELAWIDGETTOOLS_BUILD_STATIC_LIB) target_compile_definitions(ElaWidgetTools PUBLIC ELAWIDGETTOOLS_STATIC_LIB) endif () FILE(GLOB EXPORT_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/*.h) target_include_directories(${PROJECT_NAME} PUBLIC $ $ $ $ ) if (MINGW) set_target_properties(${PROJECT_NAME} PROPERTIES PREFIX "") endif () if (MSVC) set_target_properties(${PROJECT_NAME} PROPERTIES DEBUG_POSTFIX "d") endif () set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${PROJECT_NAME}) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${PROJECT_NAME}) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${PROJECT_NAME}) if (WIN32) target_link_libraries(${PROJECT_NAME} PUBLIC Qt${QT_VERSION_MAJOR}::Widgets D3D11 DXGI ) else () target_link_libraries(${PROJECT_NAME} PUBLIC Qt${QT_VERSION_MAJOR}::Widgets ) endif () install( TARGETS ${PROJECT_NAME} EXPORT ${PROJECT_NAME} ARCHIVE DESTINATION ${PROJECT_NAME}/lib LIBRARY DESTINATION ${PROJECT_NAME}/lib RUNTIME DESTINATION ${PROJECT_NAME}/bin ) install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/ElaWidgetToolsExample RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/ElaWidgetToolsExample ) if (MSVC AND NOT LIB_TYPE STREQUAL "STATIC") install( FILES $ DESTINATION ${CMAKE_INSTALL_PREFIX}/ElaWidgetToolsExample OPTIONAL) endif () install(FILES ${EXPORT_HEADERS} DESTINATION ${PROJECT_NAME}/include) set(INCLUDE_DIRS include) set(LIBRARIES ${PROJECT_NAME}) set(LIB_DIR lib) install( EXPORT ${PROJECT_NAME} FILE ${PROJECT_NAME}Targets.cmake DESTINATION ${PROJECT_NAME}/lib/cmake ) include(CMakePackageConfigHelpers) write_basic_package_version_file( ${PROJECT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake VERSION 2.0.0 COMPATIBILITY SameMajorVersion ) configure_package_config_file( ${PROJECT_SOURCE_DIR}/${PROJECT_NAME}Config.cmake.in ${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake INSTALL_DESTINATION lib/cmake PATH_VARS INCLUDE_DIRS LIBRARIES LIB_DIR INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME} ) install( FILES ${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake ${PROJECT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake DESTINATION ${PROJECT_NAME}/lib/cmake )