CMake:set函数定制变量的使用(二)

1、定制变量
1.1、自定义变量
  • 在上面的例子用,假设这五个源文件反复被使用,每次都直接把它们的名字写出来是一件很麻烦的事情,此时可以通过定义一个变了,将文件名字的字符换存储起来,在cmake里定义变量需要使用set。

    # SET指令的语法:[]中的为可选参数,如果不需要刻意不写
    # set(VARIABLE_NAME [VALUE] [ CACHE TYPE DOCSTRING [FORCE] ] )
    # VARIABLE_NAME:变量名称
    # VALUE:变量值
    # []中的为可选指令
    
  • 例如对于多文件编译,可以将源文件定义到一个变量里到处引用

    # set定义的变量值之间以' '或者';'分隔开
    # set(src_list main.cpp;mul.cpp;add.cpp;sub.cpp;dived.cpp)
    set(src_list main.cpp mul.cpp add.cpp sub.cpp dived.cpp)
    
    # 生成可执行程序依赖src_list中的变量值,通过${src_list}获取
    add_executable(main ${src_list})
    
1.2、指定使用的C++标准
  • 在编写C++程序的使用,可能会用到C++11、C++14、C++17、C++20、C++23等新特性,那么就需要在编译的时候在编译命令中制定出使用的C++标准

  • g++ *.cpp -o main -std=c++11,其中的-std=c++11参数制定出需要使用C++11标准编译程序,C++标准对应有一种宏叫做DCMAKE_CXX_STANDARD,在Cmake中想要指定C++标准有两种方式

  • 在CMakeLists.txt中通过set命令指定,其中CMAKE_CXX_STANDARD是系统变量

    # 使用C++11标准
    set(CMAKE_CXX_STANDARD 11)
    # 使用C++14标准
    set(CMAKE_CXX_STANDARD 14)
    # 使用C++17标准
    set(CMAKE_CXX_STANDARD 17)
    
  • 在执行cmake命令的时候指定出这个宏值

    # 使用C++11标准
    cmake CMakeLists.txt文件路径 -DCMAKE_CXX_STANDARD=11
    # 使用C++14标准
    cmake CMakeLists.txt文件路径 -DCMAKE_CXX_STANDARD=14
    # 使用C++17标准
    cmake CMakeLists.txt文件路径 -DCMAKE_CXX_STANDARD=17
    
1.3、指定文件输出路径

Cmake中指定可执行程序的输出路径,也对应一个宏,叫做EXECUTABLE_OUTPUT_PATH,它的值还是通过set命令进行设置

set(CURRENT_PATH ./)
set(EXECUTABLE_OUTPUT_PATH ${CURRENT_PATH}/bin)
  • set(CURRENT_PATH ./):定义一个变了用于存储获取当前路径
  • set(EXECUTABLE_OUTPUT_PATH ${CURRENT_PATH}/bin):将拼接好的路径值设置给EXECUTABLE_OUTPUT_PATH
  • 如果这个路径中出现不存在的路径,cmake会在编译阶段自动生成,无需自己手动创建

由于可执行程序是基于cmake命令生成的makefile文件,然后再执行make命令得到;所以如果此处指定可执行程序生成路基的时候使用的是相对路径./xxx/xxx,那么这个路径中的./对应的就是makefile文件所在的那个目录

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值