zoukankan      html  css  js  c++  java
  • 最简单的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)
  • 相关阅读:
    pycharm的各种设置,配置
    python中文件路径的问题
    Pycharm使用的一些问题!!!
    networkx如何将图写到邻接矩阵里?
    networkX如何读取存储图的二进制.dat文件
    再次理解线性回归与梯度下降
    Python DataFrame 如何删除原来的索引,重新建立索引
    NetworkX初相识
    haproxy + keepalived + mycat 高可用与负载均衡集群配置 centos7
    otter+canal
  • 原文地址:https://www.cnblogs.com/coolbear/p/7149198.html
Copyright © 2011-2022 走看看