项目根目录CMakeList.txt
CMAKE_MINIMUM_REQUIRED(VERSION 3.3)
PROJECT(xweather VERSION 1.0.2 LANGUAGES CXX)
ADD_SUBDIRECTORY(src)
src目录CMakeList.txt
SET(CMAKE_CXX_STANDARD 11)
SET(CMAKE_AUTOMOC ON)
SET(CMAKE_AUTORCC ON)
#SET(Qt5_DIR "${CMAKE_PREFIX_PATH}/cmake/Qt5")
#SET(Qt5Core_DIR "${CMAKE_PREFIX_PATH}/cmake/Qt5Core")
#SET(Qt5Gui_DIR "${CMAKE_PREFIX_PATH}/cmake/Qt5Gui")
#SET(Qt5Widgets_DIR "${CMAKE_PREFIX_PATH}/cmake/Qt5Widgets")
#SET(Qt5WebEngineWidgets_DIR "${CMAKE_PREFIX_PATH}/cmake/Qt5WebEngineWidgets")
#FIND_PACKAGE失败则需要设置CMAKE_PREFIX_PATH,或者设置上述路径
SET(CMAKE_PREFIX_PATH "/usr/lib/x86_64-linux-gnu/cmake")
FIND_PACKAGE(Qt5 COMPONENTS Core REQUIRED)
FIND_PACKAGE(Qt5 COMPONENTS Gui REQUIRED)
FIND_PACKAGE(Qt5 COMPONENTS Widgets REQUIRED)
FIND_PACKAGE(Qt5 COMPONENTS Network REQUIRED)
#使用pgk-config配置第三方库
FIND_PACKAGE(PkgConfig)
PKG_CHECK_MODULES(3RD_LIBS REQUIRED freetype2 fontconfig)
INCLUDE_DIRECTORIES(${3RD_LIBS_fontconfig_INCLUDEDIR})
INCLUDE_DIRECTORIES(${3RD_LIBS_freetype2_INCLUDEDIR}/freetype2)
#遍历CMAKE_CURRENT_SOURCE_DIR及其子目录中源文件,添加到SRC_FILES中
FILE(GLOB_RECURSE SRC_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.cpp *.h)
#AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR} SRC_FILES)
#FOREACH(FILE IN LISTS SRC_FILES)
# MESSAGE(STATUS ${FILE})
#ENDFOREACH(FILE)
#SET(SRC_FILES main.cpp MainDialog.cpp MainDialog.h)
#已经使用了SET(CMAKE_AUTORCC ON),可以不使用QT5_ADD_RESOURCES, qrc文件最终也是被编译为CPP文件。
#QT5_ADD_RESOURCES(QRC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/resource/res.qrc)
SET(QRC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/resource/res.qrc)
#将编译产生的可执行文件或库文件存放到指定目录下,不包含编译生成的中间文件
#SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
#在哪里定义ADD_EXECUTABLE或者ADD_LIBRARY,如果需要改变存放路径,就在哪里加入上述定义
ADD_EXECUTABLE(xweather ${SRC_FILES} ${QRC_FILES})
TARGET_LINK_LIBRARIES(xweather Qt5::Core Qt5::Widgets Qt5::Network ${3RD_LIBS_fontconfig_LIBRARIES} ${3RD_LIBS_freetype2_LIBRARIES})
#INSTALL指令用于定义安装规则,安装的内容可以包括目标二进制、动态库、静态库以及文件、目录、脚本等
#CMAKE_INSTALL_PREFIX默认值为/usr/local
SET(CMAKE_INSTALL_PREFIX /usr)
#INSTALL(TARGETS myrun mysharedlib mystaticlib
# RUNTIME DESTINATION bin #可执行二进制myrun安装到${CMAKE_INSTALL_PREFIX}/bin目录
# LIBRARY DESTINATION lib #动态库libsharedmylib安装到${CMAKE_INSTALL_PREFIX}/lib目录
# ARCHIVE DESTINATION libstatic) #静态库 libmystaticlib 安装到${CMAKE_INSTALL_PREFIX}/libstatic目录
INSTALL(TARGETS xweather RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
#普通文件,比如desktop文件,程序icon,脚本文件,以及目录等,都可以用INSTALL安装到指定目录。
INSTALL(FILES ${PROJECT_SOURCE_DIR}/data/xweather.desktop
DESTINATION ${CMAKE_INSTALL_PREFIX}/share/applications)
INSTALL(FILES ${PROJECT_SOURCE_DIR}/data/xweather.png
DESTINATION ${CMAKE_INSTALL_PREFIX}/share/pixmaps)