Cmake基础示例:如何编译【跨平台】的动态库和应用程序
原创跨平台编译动态库和应用程序的CMake基础示例
在软件开发过程中,跨平台编译是一个常见的需求。CMake 是一个跨平台的安装(编译)工具,它能够帮助开发者生成适用于不同平台的构建系统。本文将提供一个易懂的CMake示例,展示怎样编译跨平台的动态库和应用程序。
1. 环境准备
在起初之前,请确保你的系统中已经安装了CMake。CMake 是一个开源项目,可以在其官方网站(https://cmake.org/)下载。安装完成后,你可以在命令行中通过以下命令检查CMake是否安装圆满:
cmake --version
此外,还需要安装一个C++编译器,如GCC或Clang。对于Windows平台,可以使用MinGW或Visual Studio。
2. 创建项目结构
创建一个项目目录,并在其中创建以下结构:
project/
│
├── src/ # 源代码目录
│ ├── main.cpp # 应用程序主文件
│ └── lib/ # 动态库源代码目录
│ └── mylib.cpp # 动态库源代码文件
│
└── CMakeLists.txt # CMake配置文件
3. 编写CMakeLists.txt文件
CMakeLists.txt 文件定义了项目的构建规则。以下是一个易懂的CMakeLists.txt文件示例,用于编译动态库和应用程序:
cmake_minimum_required(VERSION 3.10)
project(MyProject)
# 设置C++标准
set(CMAKE_CXX_STANDARD 11)
# 添加动态库
add_library(MyLib SHARED lib/mylib.cpp)
# 添加应用程序
add_executable(MyApp src/main.cpp)
# 链接动态库到应用程序
target_link_libraries(MyApp MyLib)
# 设置安装规则
install(TARGETS MyLib MyApp RUNTIME DESTINATION bin)
install(FILES src/mylib.h DESTINATION include)
这个CMakeLists.txt文件做了以下几件事情:
- 设置了CMake的最小版本要求。
- 定义了项目名称。
- 设置了C++标准。
- 添加了一个名为MyLib的动态库,源文件为lib/mylib.cpp。
- 添加了一个名为MyApp的应用程序,源文件为src/main.cpp。
- 将MyLib动态库链接到MyApp应用程序。
- 设置了安装规则,将MyLib和MyApp安装到bin目录,将头文件安装到include目录。
4. 编译项目
在命令行中,进入项目目录并运行以下命令来生成构建系统:
cmake .
这会生成一个名为build的目录,其中包含用于编译项目的Makefile或其他构建系统文件。
接下来,在build目录中运行以下命令来编译项目:
make
编译完成后,build目录中会生成MyApp和MyLib的可执行文件和动态库文件。
5. 运行应用程序
在命令行中,进入build目录并运行以下命令来运行MyApp应用程序:
./MyApp
这会调用MyApp应用程序,它将使用MyLib动态库中的功能。
6. 跨平台编译
CMake赞成跨平台编译,只需在命令行中指定目标平台即可。以下是一些示例:
# 编译为Linux平台
cmake -DCMAKE_SYSTEM_NAME=Linux ..
make
# 编译为Windows平台
cmake -G "MinGW Makefiles" -DCMAKE_SYSTEM_NAME=Windows ..
make
# 编译为macOS平台
cmake -G "Xcode" -DCMAKE_SYSTEM_NAME=Darwin ..
make
以上命令分别用于编译Linux、Windows和macOS平台的项目。
7. 总结
本文提供了一个易懂的CMake示例,展示了怎样编译跨平台的动态库和应用程序。通过使用CMake,你可以轻松地在不同的平台上构建和部署你的项目。期望这个示例能帮助你更好地明白CMake的使用。