请允许我来讲解“CMake的简单应用”的完整攻略。
什么是 CMake
CMake 是一个跨平台的编译构建工具,它可以用来自动生成 Makefile、Visual Studio 的项目、XCode 的工程等等编译构建相关的文件。
它可以帮助我们更方便地管理和构建跨平台的项目,提高开发效率和代码可维护性。下面我们将介绍如何使用 CMake 来构建项目。
CMake 的安装
Linux/MacOS
在 Linux 和 MacOS 下可以通过包管理器来安装 CMake,比如在 Ubuntu 上可以使用以下命令:
sudo apt-get install cmake
而在 MacOS 上可以使用 Homebrew 来安装:
brew install cmake
Windows
在 Windows 上可以通过 CMake 官网 https://cmake.org 下载对应版本并安装。
CMake 工程的创建
我们可以先在项目根目录下新建一个 CMakeLists.txt 文件,然后根据项目的需要添加相关配置信息。
比如,下面是一个简单的 CMakeLists.txt 配置文件:
cmake_minimum_required(VERSION 2.8)
project(myproject)
set(CMAKE_CXX_STANDARD 17)
add_executable(myprogram main.cpp)
其中,cmake_minimum_required(VERSION 2.8)
表示指定需要的 CMake 最低版本为 2.8。
project(myproject)
表示指定项目名称为 myproject。
set(CMAKE_CXX_STANDARD 17)
表示指定使用的 C++ 标准为 C++17。
add_executable(myprogram main.cpp)
表示将 main.cpp 文件编译成可执行文件 myprogram。
CMake 的构建过程
基本的构建
使用 CMake 构建项目的基本过程如下:
cd 项目根目录
mkdir build
cd build
cmake ..
make
其中,..
表示使用父级目录下的 CMakeLists.txt 文件来进行构建。
参数化构建
我们可以通过参数化来指定不同的构建选项,比如:
cd 项目根目录
mkdir build-debug
cd build-debug
cmake -DCMAKE_BUILD_TYPE=Debug ..
make
这里的 -DCMAKE_BUILD_TYPE=Debug
就指定了构建选项为 Debug,可以方便我们在调试时进行单步执行、断点调试等。
在 Windows 上使用 CMake
在 Windows 上可以使用 Visual Studio 自带的命令行工具 Developer Command Prompt for VS <版本号>
来使用 CMake,比如:
rem 执行 Visual Studio 2019 的命令行工具
"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat"
rem 进入项目根目录
cd 项目根目录
rem 创建构建目录
mkdir build
rem 进入构建目录
cd build
rem 使用 Visual Studio 的生成工具进行构建
cmake -G "NMake Makefiles" ..
nmake
使用示例
示例 1:编译一个简单的 hello world 程序
- 新建一个目录,并且进入该目录:
sh
mkdir hello_world
cd hello_world
- 新建一个 main.cpp 文件,并且输入下面的代码:
```cpp
#include
using namespace std;
int main() {
cout << "Hello, World!" << endl;
return 0;
}
```
- 新建一个 CMakeLists.txt 文件,并且输入下面的代码:
```cmake
cmak_minimum_required(VERSION 2.8)
project(hello_world)
add_executable(hello_world main.cpp)
```
- 构建项目:
sh
mkdir build
cd build
cmake ..
make
- 运行程序:
sh
./hello_world
此时,输出内容应该是:Hello, World!
示例 2:编译并链接一个动态库
- 新建一个目录,并且进入该目录:
sh
mkdir calculate
cd calculate
- 新建一个 calculate.cpp 文件,并且输入下面的代码:
```cpp
extern "C" int add(int a, int b) {
return a + b;
}
extern "C" int sub(int a, int b) {
return a - b;
}
```
- 新建一个 CMakeLists.txt 文件,并且输入下面的代码:
```cmake
cmake_minimum_required(VERSION 2.8)
project(calculate)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin)
configure_file(calculate.h.in calculate.h)
add_library(calculate SHARED calculate.cpp)
install(TARGETS calculate
EXPORT calculate-targets
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
INCLUDES DESTINATION include)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/calculate.h
DESTINATION include/calculate)
```
-
使用
cmake -DCMAKE_INSTALL_PREFIX=./install .. && make install
进行构建和安装 -
在其他项目中使用该动态库(假设该项目为 test),需要编写 test.cpp 文件,并且输入下面的代码:
```cpp
#include
#include "calculate.h"
using namespace std;
int main() {
int a = 1;
int b = 2;
cout << "add(" << a << ", " << b << ") = " << add(a, b) << endl;
cout << "sub(" << a << ", " << b << ") = " << sub(a, b) << endl;
return 0;
}
```
- 新建一个 CMakeLists.txt 文件,并且输入下面的代码:
```cmake
cmake_minimum_required(VERSION 2.8)
project(test)
set(CMAKE_CXX_STANDARD 17)
find_package(calculate REQUIRED)
include_directories(${calculate_INCLUDE_DIRS})
add_executable(test test.cpp)
target_link_libraries(test calculate)
```
-
使用
cmake .. && make
进行构建 -
运行程序:
sh
./test
此时,输出内容应该是:add(1, 2) = 3
和 sub(1, 2) = -1
以上就是 CMake 的简单应用的完整攻略,希望对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:CMake的简单应用 - Python技术站