• 最简单的VS-Qt-CMake项目框架


    使用qtcreator新建一个空工程,可以得到main.cpp,mainwindow.cpp,mainwindow.h和mainwindow.ui四个文件

    下面主要介绍CMakeLists.txt的内容

    cmake_minimum_required(VERSION 3.0)
    
    SET(PRODUCT_NAME ReadS3C)
    
    SET(PRODUCT_HEADER_FILES
        mainwindow.h
    )
    
    SET(PRODUCT_UI_FILES
        mainwindow.ui
    )
    
    SET(PRODUCT_FILES
        main.cpp
        mainwindow.cpp
        ${PRODUCT_HEADER_FILES}
    )
    
    SET(PRODUCT_DATA_FILES
    )
    
    SET(QT_FOUND FALSE)
    IF(${CMAKE_VERSION} VERSION_LESS "3.2.0")
        FIND_PACKAGE(Qt5Widgets)
        IF(Qt5Widgets_FOUND)
            ADD_DEFINITIONS(-DUSE_QT_VERSION=5)
            SET(QT_FOUND TRUE)
        ELSE(Qt5Widgets_FOUND)
            MESSAGE("*** Qt5 not found, which may be caused by missing/wrong CMake module files. "
                    "You should set Qt5Widgets_DIR to $(QT_DIR)/lib/cmake/Qt5Widgets/ to find variables.")
        ENDIF(Qt5Widgets_FOUND)
    ELSE()
        FIND_PACKAGE(Qt5 COMPONENTS Widgets)
        IF(Qt5_FOUND)
            ADD_DEFINITIONS(-DUSE_QT_VERSION=5)
            SET(QT_FOUND TRUE)
        ENDIF(Qt5_FOUND)
    ENDIF()
    
    QT5_WRAP_UI(UI_FILES ${PRODUCT_UI_FILES}) 
    QT5_WRAP_CPP(MOC_FILES ${PRODUCT_HEADER_FILES})
    
    SET(PRODUCT_FILES ${PRODUCT_FILES} ${UI_FILES} ${MOC_FILES})
    IF(WIN32)
        #SET(PRODUCT_FILES ${PRODUCT_FILES} my.rc)
    ENDIF(WIN32)
    
    IF(QT_FOUND)
        #QT5_ADD_RESOURCES(RES_FILES skin/qdarkstyle/style.qrc)
    ENDIF()
    SET(PRODUCT_FILES ${PRODUCT_FILES} ${RES_FILES})
    
    SOURCE_GROUP("auto generated files" FILES ${UI_FILES} ${MOC_FILES} ${RES_FILES})
    SOURCE_GROUP("ui files" FILES ${PRODUCT_UI_FILES})
    
    INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
    #LINK_DIRECTORIES(${OSG_LIB_DIR})
        
    SET(WITH_CONSOLE 1)
    IF(${WITH_CONSOLE})
        ADD_EXECUTABLE(${PRODUCT_NAME} ${PRODUCT_FILES})
    ELSE(${WITH_CONSOLE})
        ADD_EXECUTABLE(${PRODUCT_NAME} WIN32 ${PRODUCT_FILES})
    ENDIF(${WITH_CONSOLE})
    
    SET_TARGET_PROPERTIES(${PRODUCT_NAME} PROPERTIES DEBUG_POSTFIX "${CMAKE_DEBUG_POSTFIX}")
    
    TARGET_LINK_LIBRARIES(${PRODUCT_NAME}
        ${OPENGL_LIBRARIES} ${THIRD_PARTY_LIBRARIES} ${EXTERNAL_LIBRARIES}
    )
    
    SET_TARGET_PROPERTIES(${PRODUCT_NAME} PROPERTIES 
        ARCHIVE_OUTPUT_DIRECTORY_DEBUG "${PROJECT_BINARY_DIR}/lib"
        ARCHIVE_OUTPUT_DIRECTORY_RELEASE "${PROJECT_BINARY_DIR}/lib"
        LIBRARY_OUTPUT_DIRECTORY_DEBUG "${PROJECT_BINARY_DIR}/lib"
        LIBRARY_OUTPUT_DIRECTORY_RELEASE "${PROJECT_BINARY_DIR}/lib"
        RUNTIME_OUTPUT_DIRECTORY_DEBUG "${PROJECT_BINARY_DIR}/bin"
        RUNTIME_OUTPUT_DIRECTORY_RELEASE "${PROJECT_BINARY_DIR}/bin")
    
    INSTALL(TARGETS ${PRODUCT_NAME} RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
    INSTALL(FILES ${PRODUCT_DATA_FILES} DESTINATION ${CMAKE_INSTALL_PREFIX}/bin/data)
    
    IF(QT_FOUND)
        QT5_USE_MODULES(${PRODUCT_NAME} Widgets Network OpenGL)
    ENDIF(QT_FOUND)
  • 相关阅读:
    第三十四节(java-实现在线翻译)
    第三十三节(java-操作Excel实现企业级批量处理大数据)
    第三十二节( Java-实现体育彩票开奖系统)
    第三十一节(java-实现QQ空间访问量统计系统)
    第三十节(java-实现水印图片)
    使用VBA批量CSV转XLS(97-2003)
    WPF中Datagrid控件添加行号
    简单多播委托Demo
    使用Linq查找重复
    简单的操作符重载,笔记
  • 原文地址:https://www.cnblogs.com/coolbear/p/7149198.html
Copyright © 2020-2023  润新知