开源项目学习(6)---- CMake 可执行文件生成

CMake 基础DEMO

可执行文件的生成

最简单的可执行文件实例
cmake_minimum_required(VERSION 3.22)
project(tonydemoproject)

add_executable(testdemo main.cpp)

如果要添加多个文件到可执行文件中:

cmake_minimum_required(VERSION 3.22)
project(tonydemoproject)

add_executable(testdemo main.cpp basicStringDemo.cpp basicStringDemo.h)
使用变量定义生成目标

也可以使用变量的方法定义:

file( GLOB APP_SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.cpp )
message(Info "CMAKE_CURRENT_SOURCE_DIR is ${CMAKE_CURRENT_SOURCE_DIR}")
message(Info "APP_SOURCES is ${APP_SOURCES}")
add_executable(testdemo ${APP_SOURCES})

输出结果如下:

InfoCMAKE_CURRENT_SOURCE_DIR is /home/tonychen/Documents/visualstudiocode_demo
InfoAPP_SOURCES is basicStringDemo.cpp;cplusCastDemo.cpp;main.cpp
-- Configuring done
-- Generating done
-- Build files have been written to: /home/tonychen/Documents/visualstudiocode_demo/cmake_build

上面的 message 用于打印出信息,第一个参数的含义如下:

() = 重要消息;
 STATUS = 非重要消息;
 WARNING = CMake 警告, 会继续执行;
 AUTHOR_WARNING = CMake 警告 (dev), 会继续执行;
 SEND_ERROR = CMake 错误, 继续执行,但是会跳过生成的步骤;
 FATAL_ERROR = CMake 错误, 终止所有处理过程;
添加宏定义
......
add_definitions(-DTDEBUG)
add_executable(testdemo ${APP_SOURCES})

上面的 CMakeLists.txt 中就会自动添加 TDEBUG的宏

设置可执行文件的路径

设置可执行文件输出目录的方法如下:

.....

set (EXECUTABLE_OUTPUT_PATH ./bin/)
add_definitions(-DTDEBUG)
add_executable(testdemo ${APP_SOURCES})

编译时就会看到可执行文件的路径变化:
Consolidate compiler generated dependencies of target testdemo
[ 25%] Building CXX object CMakeFiles/testdemo.dir/main.cpp.o
[ 50%] Linking CXX executable bin/testdemo
[100%] Built target testdemo

自动寻找依赖库

cmake 提供了一个通过 类unix 系统都有的 pkg-config 命令自动查找依赖的库和对应头文件的操作,看实例如下:

cmake_minimum_required(VERSION 3.21)
project(basicc_demo C)

set(CMAKE_C_STANDARD 11)

find_package(PkgConfig REQUIRED)
pkg_search_module(EGL REQUIRED egl)
pkg_search_module(GLESv2 REQUIRED glesv2)

# 假设EGL_FOUND 打印出具体的 EGL 和 GLESv2 的信息
if(EGL_FOUND)
MESSAGE(WARNING "Found Packages EGL")
MESSAGE(WARNING "print ${EGL_INCLUDE_DIRS}")
MESSAGE(WARNING "print ${GLESv2_LIBRARIES}")
endif()

add_executable(basicc_demo main.c
        testbasicCOperator.h
        testbasicCOperator.c
        testbasicPointer.c
        testbasicPointer.h
        ccommon.h
        basicCVector.c
        basicCVector.h)

pkg_search_module( REQUIRED|QUIET [ ])
pkg_search_module 这个函数中,参数意义如下:

<prefix>: 这是一个变量前缀,CMake 会创建一些变量来表示找到模块的信息,这些信息会以这个前缀作为开头,
比如前缀是 FOO,那么可能会创建变量 FOO_FOUND,FOO_INCLUDE_DIRS FOO_LIBRARIES
REQUIRED 或 QUIET:
REQUIRED 表示这个模块是必须找到的,如果找不到,CMake 将会停止配置过程并报错。
QUIET 表示如果找不到模块,CMake 不会发出警告或错误,配置过程会继续。
<name>: 这是你要查找的模块的名称,通常是 pkg-config 的模块名称。

打印信息

在 CMake 中,message() 函数用于在构建过程中输出信息性、警告性或错误性的消息,基本的使用方法如下:

message([<mode>] "message to display" ...)

mode 是可选参数,如果不提供,默认是 STATUS 类型,mode 的可选参数如下:
STATUS: 表示一条状态消息,这是默认模式
SEND_ERROR: 表示一条错误消息,这会导致 CMake 继续处理,但最终配置步骤会失败
FATAL_ERROR: 表示一条致命错误消息,CMake 会立即停止处
WARNING: 表示一条警告消息,CMake 会继续处理
AUTHOR_WARNING: 表示一条仅对项目作者可见的警告消息,类似于 WARNING,但不会警告最终用户

CMake 常见编译选项

下面是一些常用的 CMake 编译选项,以及经过验证:

  1. -DCMAKE_BUILD_TYPE: 设置构建类型,如 DebugReleaseRelWithDebInfoMinSizeRel

  2. -DVAR=value: 定义一个变量及其值,可以在 CMakeLists.txt 中使用该变量

  3. -H -S: 指定源代码目录,两者的含义相同

  4. -B: 指定生成构建系统文件的目录,与 -S 选项结合使用 比如:
    cmake -S /xxxx/src -B ./cmake_build_dir

  5. -D<CMAKE_VARIABLE>=<value>: 设置 CMake 内置变量的值,如 CMAKE_C_COMPILERCMAKE_CXX_COMPILER

  6. --build pathtobuild 在生成编译系统文件的基础上进行编译,路径和 -B 选项生成的一致,此命令会进行编译操作

tonychen@tonychen-PC:~/CLionProjects/basicc_demo$ cmake --build ./cmake-build-debug/
Consolidate compiler generated dependencies of target basicc_demo
[100%] Built target basicc_demo
  1. --target xxx 制定生成的目标,通常和 --build 选项配合使用,注意这里的目标要和 CMakeLists.txt 中的保持一致,此命令用于 CMakeLists.txt 包含多目标的情形

  2. -DCMAKE_INSTALL_PREFIX 设置安装的路径前缀
    cmake -DCMAKE_INSTALL_PREFIX=/path/to/install

9.-DBUILD_SHARED_LIBS=ON: 默认构建共享库(动态库)

  1. -DBUILD_STATIC_LIBS=ON: 构建静态库
    cmake -DBUILD_STATIC_LIBS=ON
  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,VSCode是一款开源且功能强大的集成开发环境(IDE),可用于编写多种编程语言,并拥有各种实用的插件和扩展。 要在VSCode中使用CMake生成执行文件,您需要按照以下步骤进行操作: 1. 安装VSCode和CMake插件:首先,您需要在计算机上安装VSCode和CMake。在安装VSCode之后,您可以通过扩展市场安装CMake插件,这将使您能够在VSCode中使用CMake命令。 2. 创建CMakeLists.txt文件:在您的项目根目录下创建一个名为`CMakeLists.txt`的文件。这个文件是用来定义CMake构建项目所需的配置信息的。 3. 编写CMake配置:在`CMakeLists.txt`文件中,您需要编写CMake的配置指令,以告诉CMake如何构建您的项目。这些指令包括设置项目名称、设置编译器、添加源文件、定义可执行目标等等。 4. 打开终端:在VSCode中,您可以通过点击顶部菜单中的"终端"选项,然后选择"新终端"来打开终端。 5. 在终端中输入CMake命令:在打开的终端中,您可以输入CMake命令来生成执行文件。例如,您可以使用`cmake .`命令来生成Makefile,并使用`make`命令来构建可执行文件。 6. 运行可执行文件:一旦构建完成,您可以在终端中运行生成的可执行文件。使用`./<可执行文件名>`命令来运行您的程序。 总结:通过安装VSCode和CMake插件,创建CMakeLists.txt文件并编写CMake配置,然后在VSCode中的终端中使用CMake命令来生成和构建可执行文件。然后,您可以使用终端来运行生成的可执行文件。希望这个回答对您有帮助!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值