首页 > 其他分享 >CMake重要指令

CMake重要指令

时间:2023-05-06 22:22:33浏览次数:35  
标签:SRC 重要 语法 add 指令 cpp CMake main hello

1 语法特性介绍

  • 基本语法格式——指令(参数1 参数2)
    • 参数使用括弧括起来;
    • 参数之间使用空格或者分号隔开;
set(HELLO hello.cpp)
add_executable(hello main.cpp hello.cpp)
ADD_EXECUTABLE(hello main.cpp ${HELLO})
  • 变量使用${}方式取值,但是在IF控制语句中是直接使用变量名

2 重要指令和CMake常用变量

2.1 重要指令

  • cmake_minimum_required——指定CMake的最小版本要求
    • 语法:cmake_minimum_required(VERSION versionNumber [FATAL_ERROR])
# CMake最小版本要求为2.8.3
cmake_minimum_required(VERSION 2.8.3)
  • project——定义工程名称,并可指定工程支持的语言
    • 语法:project(project name[CXX] [C] [Java])
# 指定工程名为HELLOWORLD
project(HELLOWORLD)
  • set——显示的定义变量
    • 语法:set(VAR [VALUE] [CACHE TYPE DOCSTRING [FORCE]])
# 定义SRC变量,其值为main.cpp和hello.cpp
set(SRC main.cpp hello.cpp)
  • include_directories——向工程添加多个特定的头文件搜索路径----->相当于指定g++编译器参数-I
    • 语法:include_directories([AFTER|BEFORE][SYSTEM]dir1 dir2...)
# 将/usr/include/myinclude和./include添加到头文件搜索路径
include_directories(/usr/include/myinclude ./include)
  • add_library——生成库文件
    • 语法:add_library(libname[SHARED|STATIC|MODULE][EXCLUDE_FROM_ALL] source1 source2 ... sourceN)
# 通过变量SRC生成libhello.so共享库
add_library(hello SHARED ${SRC})
  • add_compile_options——添加编译参数
    • 语法:add_compile_options(
# 添加编译参数 -wall -std=c++1 -o2
add_compile_options(-wall -std=c++1 -o2)
  • add_executable——生成可执行文件
    • 语法:add_executable(exename source1 source2 ... sourceN)
# 编译main.cpp为可执行程序main
add_executable(main main.cpp)
  • target_link_libraries——为target添加需要链接的共享库文件------>相当于指定g++编译器的-l参数
    • 语法:target_link_libraries(target library1<debug | optimized> library2...)
# 将hello动态库文件链接到可执行文件main
target_link_libraries(main hello)
  • add_subdirectory——向当前工程添加存放源文件的子目录,并可以指定中间二进制和目标二进制存放的位置
    • 语法:add_subdirectory(source_dir [binary_dir][EXCLUDE_FROM_ALL])
# 添加src子目录,src中必须具备一个CMakelists.txt即使它为空文件
add_subdirectory(src)
  • aux_source_directory——发现一个目录下所有的源代码文件并将列表存储在一个变量中,这个指令临时被用来自动构建源文件列表
    • 语法:aux_source_directory(dir VARIABLE)
# 定义SRC变量,其值为当前目录下所有的源代码文件
aux_source_directory(. SRC)
# 编译SRC变量所代表的源代码文件,生成main可执行文件
add_executable(main ${SRC})

标签:SRC,重要,语法,add,指令,cpp,CMake,main,hello
From: https://www.cnblogs.com/Alex-goforit/p/17378547.html

相关文章

  • Ubuntu 下判断 cmake 用的 gcc 还是 g++,如何切换版本
    >1/1>>Ubuntu下怎么知道cmake用的gcc还是g++1/1在Ubuntu上,可以通过`cmake`命令行选项`-DCMAKE_CXX_COMPILER`来指定C++编译器,而默认情况下,`cmake`将使用系统的默认编译器。要查看`cmake`使用的默认C++编译器,可以使用以下命令:perl```perlcmake--system......
  • 使用Angular Universal时的重要注意事项
    介绍尽管AngularUniversal项目的目标是能够在服务器上无缝渲染Angular应用程序,但您应该考虑一些不一致之处。首先,服务器和浏览器环境之间存在明显的差异。在服务器上渲染时,应用程序处于短暂或“快照”状态。应用程序被完全渲染一次,返回完整的HTML,而整个过程中的产生的状态被销毁......
  • javaNIO创建tcp服务器时的重要点
    在使用NIO创建非阻塞tcp服务器时,几个容易出现问题的点,如下代码注释所示:packagenet.yury.nio;importjava.io.IOException;importjava.net.InetSocketAddress;importjava.nio.ByteBuffer;importjava.nio.CharBuffer;importjava.nio.channels.*;importjava.nio.charse......
  • 软件分析和设计过程的重要图形(架构图)
    架构图(4+1视图)总体一种视图:场景视图(用例图)一文掌握14种UML图:https://cloud.tencent.com/developer/article/1684161【概念】用例图是指由参与者、用例,边界以及它们之间的关系构成的用于描述系统功能的视图。【目的】用来描述整个系统的功能。用例图中包含以下三种......
  • 【nodejs基础】模块加载机制及npm指令详解03
    1.模块化的基本概念模块化:是指解决一个复杂问题时,自顶向下逐层把系统划分成若干模块的过程。对于整个系统来说,模块是可组合、分解和更换的单元编程领域中的模块化,就是遵守固定的规则,把一个大文件拆成独立并互相依赖的多个小模块。把代码进行模块化拆分的好处*提高了代码的复......
  • Git的相关学习2(要点:git常用指令)
    git的主要工作流程获取本地仓库git常用指令需要知道的是,刚才我们创建好的一个本地仓库,里面的文件除了.git文件夹,其余的均为工作目录;从工作区提交到暂存区:gitadd.(表示提交到所有的文件里面去)从暂存区提交到本地仓库(需要加入相应注释):gitcommit-m"注释内容"gitst......
  • Python网页应用开发神器fac 0.2.6版本重要新功能一览
    fac项目地址:https://github.com/CNFeffery/feffery-antd-components,欢迎star支持大家好我是费老师,距离我的开源Python网页应用通用组件库fac的0.2.0版本发布已过去半个多月的时间,在国内外众多fac用户的反馈建议下,经过高强度的优化和功能更新,目前fac已经更新到0.2.6版本,且......
  • Cmake入门
    Cmake官方网址https://cmake.org/CMakeLists.txt1#CMakeLists.txt23PROJECT(HELLO)45SET(SRC_LISTmain.cpp)67MESSAGE(STATUS"ThisisBINARYdir"${HELLO_BINARY_DIR})89MESSAGE(STATUS"ThisisSOURCEdir"${HELLO_SOUR......
  • 《花雕学AI》29:5秒钟就能为你的想法想出新点子?ChatGPT新点子指令模型告诉你怎么做
    引言你有没有遇到过这样的情况,你想出了一个想法,但是不知道怎么扩展或改进它?你有没有想过有一个工具,可以帮你在短时间内为你的想法生成各种新的点子?如果你有这样的需求,那么你一定要了解ChatGPT。ChatGPT是一个基于人工智能的文本生成器,它可以根据你的输入生成各种内容,包括想法。它......
  • misdirection --攻击面选择与信息收集的重要性
    主机发现sudonmap-sn192.168.25.0/2434sudonmap-sT--min-rate10000-p- 192.168.25.34-oAnmapscan/portssudonmap-sT-sC-sV-O-p 192.168.25.34-oAnmapscan/detialsudonmap-sU--top-rate20 192.168.25.34-oAnmapscan/udpsudonmpa--scrip......