cmake 1_学习之Qt的CMakeLists.txt

前提概要:在看本章之前,需要预备一定cmake知识,只要看完cmake官网的tutorial教程即可。

以下是最简单的qt CMakeLists.txt文件:

cmake_minimum_required(VERSION 2.8.12)

project(untitled1)

set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)

find_package(Qt5Core)

add_executable(${PROJECT_NAME} "main.cpp" "cc.cpp")

target_link_libraries(${PROJECT_NAME} Qt5::Core)

好的,让我们一行行说起。

1. cmake_minimum_required(VERSION 2.8.12)

定义使用cmake的最小版本

2. set(CMAKE_INCLUDE_CURRENT_DIR ON)

    set(CMAKE_AUTOMOC ON)

    相当于定义宏类似情况,会被QT模块所使用

3. find_package(Qt5Core)

这一行很重要,查找包含Qt5Core的库包,一般情况下我们会使用CMAKE_PREFIX_PATH环境变量来确定搜索路径开始查找,这个环境变量在项目的构建设置当中看到。CMAKE_PREFIX_PATH指向当前qt库的根目录,然后cmake会在 ${CMAKE_PREFIX_PATH}/bin ${CMAKE_PREFIX_PATH}/lib下查找,根据这个线索找到如下:

 

 没错,在lib/cmake文件夹当中找到了对应文件Qt5CoreConfig.cmake(格式为 包名Config.cmake),如此以来就找到了这个包,并获取包的相关信息。可以用 包名_FOUND这个属性来判断是否查找到

if(Qt5Core_FOUND)
    message(STATUS "没有查找到Qt5Core包")
endif()

4. add_executable(${PROJECT_NAME} "main.cpp" "cc.cpp") 编译出可执行文件以及要用的源文件

5. target_link_libraries(${PROJECT_NAME} Qt5::Core)

这个是核心,第一个参数${PROJECT_NAME}是可执行文件名,不用多说,关键是第二个参数,看起来好像又有什么格式,其实并不是的,Qt5::Core也仅仅只是生成库的名字,qt约定俗称的格式是Qt${QT_VERSION_MAJOR}::模块名。我们可以从find_package命令下找到的Qt5CoreConfig.cmake找到

其中一行:add_library(Qt5::Core SHARED IMPORTED),是不是一下子就明白了为什么要这么写呢?

哇!这是不是很多事情就突然明朗了呢? 

从总体感受来说,cmake(CMakeLists.txt)的使用确实比qmake(pro文件)复杂的多,但是带来的是更多的便捷、跨平台、灵活,通用!

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值