Cmake基础示例:如何编译【跨平台】的动态库和应用程序

原创
ithorizon 7个月前 (10-12) 阅读数 50 #Linux

跨平台编译动态库和应用程序的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的使用。


本文由IT视界版权所有,禁止未经同意的情况下转发

文章标签: Linux


热门