【问题标题】:Cleanest way to depend on a make-based C library in my CMake C++ project在我的 CMake C++ 项目中依赖基于 make 的 C 库的最简洁方法
【发布时间】:2016-01-23 14:30:31
【问题描述】:

我正在开发一个 C++ 项目(我正在使用 CMake)并且需要依赖像这样的 C 库(但使用 make):https://github.com/RoaringBitmap/CRoaring

将该库集成到我的项目中的最简洁的方法是什么?

一个选项是将该代码导入我的源代码树,为该外部依赖项创建一个 CMakeLists.txt 并将其用作 CMake 子模块。但我不想这样做,因为该项目可能会发展,我只想将该代码作为 git 子模块依赖项,而不是实际提交到我的存储库中。

【问题讨论】:

标签: c++ cmake makefile


【解决方案1】:

如果你 cd 进入 CRoaring 的源代码并使用 execute_process 命令在 CMakeLists.txt 中调用外部命令,你可以做的是在 CMake 中使用 make 的构建系统:

execute_process

使用 INSTALL_PREFIX 可以指示在哪里编译该库,然后 cmake 将使用它。

这也意味着,只要您触发配置,make 编译就会开始,尽管我想您可以控制一点。如果您想避免 add_custom_command 可以帮助您:

add_custom_command

对于 Commander Genius,我们在构建 Windows 版本和使用 icotool 时一直在使用它们,因此可执行文件会在 exe 中嵌入一个应用程序图标。

另一种选择是使用 ExternalProject,就像 Tsyvarev 在类似帖子中指出的那样:

ExternalProject

但我不确定该调用是否足够灵活以满足您的需求。不过它有很多选择。

因此,使用 CMake 最简洁的方式实际上取决于您需要为您的项目做什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-08
    • 1970-01-01
    • 2022-12-20
    • 2022-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多