CMakeList.txt

CMakeList.txt的写法

  • 前言
  • 一个最近写好的CMakeList.txt
  • 对上边CMakeList.txt的说明
  • 修改

前言

复习一下CMakeList.txt的写法,以下面的一个CMakeList.txt为例

一个最近写好的CMakeList.txt

cmake_minimum_required(VERSION 3.17)project(QtVTKProject)#======================= INCLUSION OF Qt =======================#
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_PREFIX_PATH $ENV{QTDIR})
find_package(OpenGL)
find_package(Qt5Core REQUIRED)
find_package(Qt5Gui REQUIRED)
find_package(Qt5OpenGL REQUIRED)
find_package(Qt5Xml REQUIRED)
find_package(Qt5Widgets REQUIRED)#======================= INCLUSION OF VTK ======================#
set(VTK_DIR $ENV{VTK_DIR})
find_package(VTK REQUIRED)
include(${VTK_USE_FILE})#======================= INCLUSION OF Our Code ======================#
set(FORMS_DIR "${CMAKE_SOURCE_DIR}/forms")
set(INCLUDE_DIR "${CMAKE_SOURCE_DIR}/include")
set(SOURCE_DIR "${CMAKE_SOURCE_DIR}/src")include_directories(${FORMS_DIR})
include_directories(${INCLUDE_DIR})
include_directories(${SOURCE_DIR})file(GLOB_RECURSE SOURCES"${FORMS_DIR}/*.ui""${INCLUDE_DIR}/*.h""${SOURCE_DIR}/*.cpp"
)# Add the forms directory to the AUTOUIC search paths
set(CMAKE_AUTOUIC_SEARCH_PATHS ${CMAKE_AUTOUIC_SEARCH_PATHS} ${FORMS_DIR})# Add the executable
if (WIN32) add_executable(QtVTKProject WIN32 ${SOURCES})
elseif(UNIX)add_executable(QtVTKProject ${SOURCES})
endif()# Add the target includes
target_include_directories(QtVTKProject PRIVATE ${FORMS_DIR})
target_include_directories(QtVTKProject PRIVATE ${INCLUDE_DIR})
target_include_directories(QtVTKProject PRIVATE ${SOURCE_DIR})#===================== LINKING LIBRARIES =======================#
target_link_libraries( QtVTKProject Qt5::OpenGL)
target_link_libraries( QtVTKProject Qt5::Xml)
target_link_libraries( QtVTKProject Qt5::Widgets)
target_link_libraries( QtVTKProject ${QT_LIBRARIES} ${OPENGL_LIBRARIES})
target_link_libraries( QtVTKProject ${VTK_LIBRARIES})

对上边CMakeList.txt的说明

cmake_minimum_required(VERSION 3.17): 指定项目所需的最低CMake版本。project(QtVTKProject): 指定项目名称为"QtVTKProject"。#======================= INCLUSION OF Qt =======================#set(CMAKE_INCLUDE_CURRENT_DIR ON): 设置CMake包含当前目录。set(CMAKE_AUTOMOC ON): 设置自动运行moc(Meta-Object Compiler)工具,用于处理Qt的元对象系统。set(CMAKE_AUTOUIC ON): 设置自动运行uic(User Interface Compiler)工具,用于处理Qt的UI文件。set(CMAKE_PREFIX_PATH $ENV{QTDIR}): 设置Qt的安装路径。find_package(OpenGL): 查找OpenGL库。find_package(Qt5Core REQUIRED): 查找并要求Qt5Core库。find_package(Qt5Gui REQUIRED): 查找并要求Qt5Gui库。find_package(Qt5OpenGL REQUIRED): 查找并要求Qt5OpenGL库。find_package(Qt5Xml REQUIRED): 查找并要求Qt5Xml库。find_package(Qt5Widgets REQUIRED): 查找并要求Qt5Widgets库。#======================= INCLUSION OF VTK ======================#set(VTK_DIR $ENV{VTK_DIR}): 设置VTK的安装路径。find_package(VTK REQUIRED): 查找并要求VTK库。include(${VTK_USE_FILE}): 包含VTK的使用文件。#======================= INCLUSION OF Our Code ======================#set(FORMS_DIR "${CMAKE_SOURCE_DIR}/forms"): 设置forms目录的路径。set(INCLUDE_DIR "${CMAKE_SOURCE_DIR}/include"): 设置include目录的路径。set(SOURCE_DIR "${CMAKE_SOURCE_DIR}/src"): 设置src目录的路径。include_directories(${FORMS_DIR}): 包含forms目录以供编译器搜索ui文件。include_directories(${INCLUDE_DIR}): 包含include目录以供编译器搜索头文件。include_directories(${SOURCE_DIR}): 包含src目录以供编译器搜索源文件。file(GLOB_RECURSE SOURCES ...): 使用GLOB_RECURSE命令获取指定目录下的所有源文件。set(CMAKE_AUTOUIC_SEARCH_PATHS ...): 将forms目录添加到AUTOUIC搜索路径。if (WIN32) ... elseif(UNIX) ... endif(): 根据操作系统类型选择生成可执行文件的选项。
在Windows上使用WIN32选项,而在Unix上不包含此选项。add_executable(QtVTKProject ... ${SOURCES}): 添加可执行文件的构建目标,并指定源文件。target_include_directories(QtVTKProject PRIVATE ...): 为目标添加私有的包含目录。#===================== LINKING LIBRARIES =======================#target_link_libraries( QtVTKProject ...): 链接所需的库文件到目标。

最后,该CMakeLists.txt文件的主要目标是构建一个名为"QtVTKProject"的可执行文件。它依赖于Qt和VTK库,并包含了一些源文件和UI文件。通过设置相关的包含目录和链接库,确保了项目的正确构建和链接。

修改

如果只需要Qt库的话,可以简单修改一下:
在这里插入图片描述

cmake_minimum_required(VERSION 3.17)project(Demo1)#======================= INCLUSION OF Qt =======================#
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_PREFIX_PATH $ENV{QTDIR})
find_package(OpenGL)
find_package(Qt5Core REQUIRED)
find_package(Qt5Gui REQUIRED)
find_package(Qt5OpenGL REQUIRED)
find_package(Qt5Xml REQUIRED)
find_package(Qt5Widgets REQUIRED)#======================= INCLUSION OF Our Code ======================#
set(FORMS_DIR "${CMAKE_SOURCE_DIR}/forms")
set(INCLUDE_DIR "${CMAKE_SOURCE_DIR}/include")
set(SOURCE_DIR "${CMAKE_SOURCE_DIR}/src")include_directories(${FORMS_DIR})
include_directories(${INCLUDE_DIR})
include_directories(${SOURCE_DIR})file(GLOB_RECURSE SOURCES"${FORMS_DIR}/*.ui""${INCLUDE_DIR}/*.h""${SOURCE_DIR}/*.cpp"
)# Add the forms directory to the AUTOUIC search paths
set(CMAKE_AUTOUIC_SEARCH_PATHS ${CMAKE_AUTOUIC_SEARCH_PATHS} ${FORMS_DIR})# Add the executable
if (WIN32) add_executable(Demo1 WIN32 ${SOURCES})
elseif(UNIX)add_executable(Demo1 ${SOURCES})
endif()# Add the target includes
target_include_directories(Demo1 PRIVATE ${FORMS_DIR})
target_include_directories(Demo1 PRIVATE ${INCLUDE_DIR})
target_include_directories(Demo1 PRIVATE ${SOURCE_DIR})#===================== LINKING LIBRARIES =======================#
target_link_libraries( Demo1 Qt5::OpenGL)
target_link_libraries( Demo1 Qt5::Xml)
target_link_libraries( Demo1 Qt5::Widgets)
target_link_libraries( Demo1 ${QT_LIBRARIES} ${OPENGL_LIBRARIES})

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/71978.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python开发基础篇1——后端操作K8s API方式

文章目录 一、基本了解1.1 操作k8s API1.2 基本使用 二、数据表格展示K8s常见资源2.1 Namespace2.2 Node2.3 PV2.4 Deployment2.5 DaemonSet2.6 StatefulSet2.7 Pod2.8 Service2.9 Ingress2.10 PVC2.11 ConfigMap2.12 Secret2.13 优化 一、基本了解 操作K8s资源api方式&#xf…

算法通关村-----快速排序的应用

数组中的第K个最大元素 问题描述 给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。详见leetcode215 问题分析 之前我们已经使用堆排序/堆查找的…

高等数学刷题

两个公式本质都是相同的 Π/2 1^∞类型

【解决】mysqladmin flush-hosts

问题 mysql出现 mysqladmin flush-hosts,是因为其他客户机连接错误次数过多时,mysql会禁止客户机连接。 解决方法 1、进入服务器数据库,打开数据库命令行界面输入 flush hosts; 此时便可连接 2、可以.修改mysql配置文件,在[…

用户促活留存新方式——在APP中嵌入小游戏

随着APP同类产品的不断出现,APP开发者们面临着激烈的竞争,很多APP下载后被新的APP取代,获客成本越来越高。同时开发者还会面临用户粘性差、忠诚度低、用完即走、留存困难,商业化价值被大大缩减。 在APP中植入小游戏来提高用户活跃…

指针的应用与用法

指针的应用场景 从刚才的需求看,指针似乎并不是刚需啊,为什么一定要用指针呢,那么难理解,这是因为有些应用场景非他不可: 1.访问单片机的寄存器; 2.函数调用时内存共享; 3.常用数据结构链表&…

半导体厂务液体泄漏问题的挑战与解决方案

在半导体制造领域,液体泄漏是一项极具挑战性的问题。半导体工厂内有着大量的化学品、工艺液体和废水系统,这些液体在制造过程中扮演着至关重要的角色。然而,液体泄漏可能会导致严重的生产中断、环境污染和安全风险。本文将探讨半导体厂务中的…

【Apollo 自动驾驶】Win11 中 WSL2 安装配置 Apollo 环境

【Apollo 自动驾驶】Win11 中 WSL2 安装配置 Apollo 环境 【1】Win11 WSL2 安装配置 Nvidia Cuda 【1.1】检查计算机硬件的显卡信息 计算机图标右击 -> 管理 -> 设备管理器 -> 显示适配器; 【1.2】检查对应显卡并安装 Nvidia 显卡驱动 下载对应的 Nv…

一点感受

做了两天企业数字化转型的评委,涉及全国最顶级的公司、最顶级的实际落地项目案例,由企业真实的落地团队亲自当面讲解。主要是为了了解了解真实的一线、真实的客户、真实的应用现状和应用水平。 (1)现状 我评审的涉及底层技术平台&…

pytorch学习——循环神经网络RNN讲解及其实现

参考书籍:8.6. 循环神经网络的简洁实现 — 动手学深度学习 2.0.0 documentation 参考视频:54 循环神经网络 RNN【动手学深度学习v2】_哔哩哔哩_bilibili 一.介绍 循环神经网络RNN(Recurrent Neural Network )是一类广泛应用于序列…

Xilinx IDDR与ODDR原语的使用

文章目录 ODDR原语1. OPPOSITE_EDGE 模式2. SAME_EDGE 模式 ODDR原语 例化模板: ODDR #(.DDR_CLK_EDGE("OPPOSITE_EDGE"), // "OPPOSITE_EDGE" or "SAME_EDGE" .INIT(1b0), // Initial value of Q: 1b0 or 1b1.SRTYPE("SYNC…

css transition属性

如果想实现一些效果:比如一个div容器宽高拉伸效果,或者一些好看的有过渡的效果可以使用 定义和用法 transition 属性是一个简写属性,用于设置四个过渡属性: transition-property transition-duration transition-timing-func…

go语言的高级特性

go语言调用C语言 go tool cgo main.go

Chrome 108版(64-bit 108.0.5359.125)网盘下载

还在用Selenium的朋友们注意了,目前Chrome的最新版是116,而官方的Chromedriver只支持到115版。 可惜Google不提供旧版Chrome的下载方式,需要旧版的很难回去了。如果真的想要旧版的Chrome,只能民间自救。 我在2022年12月备份了C盘…

pyspark 系统找不到指定的路径; \Java\jdk1.8.0_172\bin\java

使用用具PyCharm 2023.2.1 1:pyspark 系统找不到指定的路径, Java not found and JAVA_HOME environment variable is not set. Install Java and set JAVA_HOME to point to the Java installation directory. 解决方法:配置正确环境变量…

VR农学虚拟仿真情景实训教学演示

首先,VR农学虚拟仿真情景实训教学提供了更为真实的实践环境。传统的农学实训往往受制于时间、空间和资源的限制,学生只能通过观察或简单的模拟来学习农业知识和技能。而借助虚拟现实技术,学生可以进入虚拟农场,与各种农作物、工具…

数据库分析工具explain

1.id:查询语句的编号 2.select_type:查询类型,有三种,simple简单查询,primary,subquery等 3.table:查询的表 4.type:查询性能,system > const > eq_ref > ref > range > index > ALL system&…

Redis 高可用及持久化

Redis 高可用 在web服务器中,高可用是指服务器可以正常访问的时间,衡量的标准是在多长时间内可以提供正常服务(99.9%、99.99%、99.999%等等)。但是在Redis语境中,高可用的含义似乎要宽泛一些,除了保证提供…

一个集成的BurpSuite漏洞探测插件1.1

免责声明 本文发布的工具和脚本,仅用作测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利&#xff0c…

最近读书了吗?林曦老师与你分享来自暄桐课堂的读书方法

近来,大家有在开心读书吗?对于读书,有一个很生动的说法:“无事常读书,一日是四日。若活七十年,便二百八十。”读书帮助我们超越个体生命经验的限制,此时此地的我们,也可借由书本&…