下面我将详细讲解“从零学习CMake构建系统”的完整攻略。
什么是 CMake
CMake 是一个开源跨平台的构建系统,可以用于管理源代码,生成各个平台的构建文件(例如 Makefile 或 Visual Studio Solution),从而实现构建和编译。使用 CMake 可以使得跨平台的程序的编写和构建变得更加简单和高效。
安装 CMake
CMake 可以在官网(https://cmake.org/)上下载,下载后根据不同的操作系统进行安装。
创建 CMakeLists.txt 文件
CMake 需要一个指示如何构建代码的文件,这个文件通常被称为 CMakeLists.txt。它包含了项目的各种设置和指令,例如项目名称、编译选项、库和可执行文件等。
下面是一个简单的 CMakeLists.txt 文件的示例:
cmake_minimum_required(VERSION 3.10) # 指定最低版本要求
project(myproject) # 指定项目名称
add_executable(myapp main.cpp) # 生成可执行文件
target_link_libraries(myapp mylib) # 链接库文件
该文件需要放在项目的根目录下。
构建项目
CMake 支持 out-of-source 构建,即在一个独立的文件夹中进行编译,而不是在源代码目录中。这使得构建过程更加干净和可控。
以下是一个 out-of-source 构建的示例:
mkdir build # 创建一个 build 文件夹
cd build # 进入 build 文件夹
cmake .. # 使用父文件夹中的 CMakeLists.txt 构建项目
make # 执行构建过程
在构建完成后,可执行文件会生成在 build 文件夹中。
示例1:编译一个简单的 C++ 程序
下面是一个 C++ 程序的示例,可以利用 CMake 进行编译:
main.cpp:
#include <iostream>
int main() {
std::cout << "Hello CMake!" << std::endl;
return 0;
}
CMakeLists.txt:
cmake_minimum_required(VERSION 3.10)
project(myproject)
add_executable(myapp main.cpp)
使用上面提到的 out-of-source 构建方式进行编译:
mkdir build
cd build
cmake ..
make
运行程序:
./myapp
输出:
Hello CMake!
示例2:编译一个使用第三方库的 C++ 程序
下面是一个使用第三方库的 C++ 程序的示例,同样可以利用 CMake 进行编译:
mylib.cpp:
#include <iostream>
void myfunc() {
std::cout << "Hello CMake! - mylib" << std::endl;
}
main.cpp:
#include <iostream>
#include "mylib.h"
int main() {
std::cout << "Hello CMake!" << std::endl;
myfunc();
return 0;
}
mylib.h:
void myfunc();
CMakeLists.txt:
cmake_minimum_required(VERSION 3.10)
project(myproject)
add_library(mylib SHARED mylib.cpp)
add_executable(myapp main.cpp)
target_link_libraries(myapp mylib)
同样使用 out-of-source 构建方式进行编译:
mkdir build
cd build
cmake ..
make
运行程序:
./myapp
输出:
Hello CMake!
Hello CMake! - mylib
至此,我们完成了使用 CMake 构建一个使用第三方库的 C++ 程序的示例。
希望这篇文章能对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:从零学习cmake构建系统 - Python技术站