从 Xcode 转换为 CMake

Aar*_*ger 5 c++ linux macos xcode cmake

我有一个最初在 Mac 上使用 Xcode 开发的 C++ 项目,我想使用 CMake 建立相同的项目。该项目使用了一些外部库,包括 eigen 和 boost。Xcode 有一个相当长的构建设置列表,包括外部库的路径、编译器版本的规范、附加链接器标志、编译器优化级别等……我想知道所有这些信息在 CMakeLists.txt 文件中的位置。我已经广泛搜索了这方面的帮助,但发现的很少。我是 CMake 新手,以前从未编写过 make 文件。如果有一个实用程序可以将我的 Xcode 项目转换为 CMake 项目,那就太理想了。但我很高兴知道这方面的教程,或者有一些具体的指导。对此的任何帮助将不胜感激。

Spa*_*Bot 2

转换策略

我非常确定,迁移到 CMake 的最简单、最快的方法是查看链接相同依赖项的类似项目,并且可能从 XCode 复制一些相对文件路径到源文件。使用 Eigen 和 Boost 编写良好的 CMakeLists.txt 可以非常小(并且与平台无关)。

原因之一是 CMake 有一种非常不同的方式来使用依赖项。对于 Boost 等知名库,CMake 包含包含标头和链接库的脚本。

最小 CMakeLists.txt

一个最小的例子可能如下所示:

find_package(Eigen3 REQUIRED)
find_package(Boost REQUIRED COMPONENTS system)
add_executable(
  app
  src/main.cpp
)
target_include_directories(
  app
  ${Eigen3_INCLUDE_DIRS}
  ${Boost_INCLUDE_DIR}
)
target_link_libraries(
  app
  ${Boost_LIBRARIES}
)
Run Code Online (Sandbox Code Playgroud)

示例项目

对于 Eigen,没有可以通过find_package调用的预安装脚本。以下是链接 Eigen 和 Boost 的两个真实示例项目:https://github.com/ompl/ompl/blob/master/CMakeLists.txt https://github.com/roboticslibrary/rl

这是Eigen 的查找脚本的示例

作为一条建议,一些 CMake 项目很复杂并且使用旧语法,较新的项目文件往往在命令中使用小写字母。