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)
  • 相关阅读:
    IOS中NSUserDefaults的用法(轻量级本地数据存储)
    ios:Failed to instantiate the default view controller for UIMainStoryboardFile 'Main'
    NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed. (Cocoa error 3840.)"
    使用AFNetworking 报错提示
    对比iOS网络组件:AFNetworking VS ASIHTTPRequest(转载)
    iOS
    如何理解语言的跨平台性
    R语言演示功能
    R 字符串处理函数
    来自 Google 的 R 语言编码风格指南
  • 原文地址:https://www.cnblogs.com/coolbear/p/7149198.html
Copyright © 2011-2022 走看看