首页 > 解决方案 > Swift C 互操作:如何避免模块映射头的绝对路径?

问题描述

我正在使用 C 互操作功能在 C 库(ROS2 RCL)上构建一个快速包装器。我目前正在使用带有模块映射的 CMake 来实现此功能。目前,我的模块图看起来像这样:

module CRcl [system] {
  header "/opt/ros/foxy/include/rcl/rcl.h"
  link "rcl"
  export *
}

这目前在我的系统上构建得很好。但是,使用绝对路径是一个非常糟糕的解决方案,因为它需要针对不同的操作系统或自定义安装路径进行修改。我希望它能够被自动发现。

理想情况下,我会想象这样的事情:

module CRcl [system] {
  header "rcl/rcl.h"
  link "rcl"
  export *
}

我没有指定绝对路径,而是指示编译器通过 CLI arg 或环境变量查找头文件。我已经看到了在 XCode 中使用框架的各种指南,但没有任何与我在 Linux 上的设置相关的指南。有谁知道实现此功能的方法?

标签: swiftcmakeclang

解决方案


推荐阅读