cMake进阶之使用vcpkg管理库

4,623 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第16天,点击查看活动详情

一、CMakeLists.txt 常用命令总结

1. command (args ...)

  • command:命令的名字
  • args: 参数列表。多个参数使用空格隔开。

2. cmake_minimum_required

  • 含义

    设置项目要求的CMake最低版本号

  • 示例

    cmake_minimum_required(VERSION 2.8)
    

3. add_executable

  • 含义 使用指定的源文件给项目添加一个可执行文件
  • 格式
    add_executable(<name> [WIN32] [MACOSX_BUNDLE] [EXCLUDE_FROM_ALL] source1 [source2 ...])
    
  • 参数介绍:
    • name:该命令调用列出的源文件来构建的可执行目标。 对应于逻辑目标名称,在项目中必须是全局唯一的。构建的可执行文件的实际文件名是基于本机平台的约定。
    • WIN32:如果给出WIN32,则在创建的目标上设置属性WIN32_EXECUTABLE。
    • MACOSX_BUNDLE:如果给定MACOSX_BUNDLE,将在创建的目标上设置相应的属性。
    • EXCLUDE_FROM_ALL:如果给定EXCLUDE_FROM_ALL,将在创建的目标上设置相应的属性。
    • source:源码列表。
  • 示例
    add_executable (CMakeClient0331 "CMakeClient0331.cpp" "CMakeClient0331.h")
    

4. project

  • 含义

    为整个工程设置一个工程名

  • 格式

    project (<PROJECT-NAME> [LANGUAGES] [<language-name>...])
    project (<PROJECT-NAME> [VERSION <major>[.<minor>[.<patch>[.<tweak>]]]] [LANGUAGES<language-name>...])
    
  • 参数介绍:

二、cmake 命令

生成一个项目的构建系统

cmake [<options>] <path-to-source>
cmake [<options>] <path-to-existing-build>
cmake [<options>] -S <path-to-source> -B <path-to-build>

使用 <path-to-build> 作为构建树,使用 <path-to-source> 作为源树。指定的路径可以是绝对路径,也可以是相对于当前工作目录的路径。源树必须包含一个CMakeLists.txt文件。如果构建树还不存在,将自动创建它。例如:

cmake -DCMAKE_BUILD_TYPE=Release -S . -B build
Build a Project
cmake --build <dir> [<options>] [-- <build-tool-options>]

Install a Project
cmake --install <dir> [<options>]

Open a Project
cmake --open <dir>

Run a Script
cmake [{-D <var>=<value>}...] -P <cmake-script-file>

Run a Command-Line Tool
cmake -E <command> [<options>]

Run the Find-Package Tool
cmake --find-package [<options>]

View Help
cmake --help[-<topic>]

三、跨平台 C++ 库管理工具: vcpkg 安装

1. 使用 gitbash 下载vcpkg

git clone https://github.com/microsoft/vcpkg

image.png

cd vcpkg
./bootstrap-vcpkg.sh #powershell上使用:.\bootstrap-vcpkg.bat

image.png

2. 使用 powershell 安装您的项目所需要的库:

进入vcpkg目录

cd vcpkg

安装库

.\vcpkg install [packages to install]

安装一个库,这里以之前提到过的 eigen3 为例

.\vcpkg install eigen3

3. 查看当前安装的库支持的平台

./vcpkg help triplets

4. 移除一个已经安装的库

.\vcpkg.exe remove eigen3

5. 使用 search 子命令来查找vcpkg中集成的库:

.\vcpkg search [search term]

6. 集成到全局

Vcpkg提供了一套机制,可以全自动的适配目录,而开发者不需要关心已安装的库的目录在哪里,也不需要设置[ 比如这里我需要在 Visual Studio 中使用 vcpkg,所以也需要运行以下命令 (首次启动需要管理员权限)]

.\vcpkg integrate install

image.png

CMake需要使用,记住下面的这个路径,在使用cmake构建的时候需要使用 CMAKE——TOOLCHAIN_FILE传入

-DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake

也就是

cmake -DCMAKE_BUILD_TYPE=Release -S . -B build -DCMAKE——TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake

7. 若要移除集成

.\vcpkg integrate remove

linux上可以参考 blog.csdn.net/sexyluna/ar…

8. 查看安装列表

.\vcpkg list 

9. 应用

cmake -S . -B build -DCMAKE--TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake

10. 其他跨平台C++库管理 conan

  • 安装 python 略过,安装成功后可以查看版本

        python --version
    
  • 安装python的时候会自动安装pip

        pip install conan