c – 从现有的Makefile创建CMakeLists文件

c – 从现有的Makefile创建CMakeLists文件,第1张

概述我想使用cmake生成C项目的构建文件.我有一个现有的Makefile. 使用标准cmake语法生成此Makefile时遇到问题. 如何在cmake的TARGET_LINK_LIBRARIES部分中包含标准的C库,如-lstdc -lpthread -lboost_thread-mt?或者这些文件应该包含在ADD_DEPENDENCIES部分中. (要么) 有没有一个简单的工具,从Makefile 我想使用cmake生成C项目的构建文件.我有一个现有的Makefile.
使用标准cmake语法生成此Makefile时遇到问题.

如何在cmake的TARGET_link_liBRARIES部分中包含标准的C库,如-lstdc -lpthread -lboost_thread-mt?或者这些文件应该包含在ADD_DEPENDENCIES部分中.

(要么)
有没有一个简单的工具,从Makefile生成一个CMakeList.txt文件

解决方法 不幸的是,从Makefile到CMakeLists没有简单的1:1的转换.由于CMake应该在所有平台上运行,所以它不能依赖平台特定的假设,如GNU make,这在某些地方会使事情变得复杂.

特别是,CMake提供了非常强大而且复杂的使用库的机制:您可以使用库的名称调用find_package,该库将从cmake模块路径调用库搜索脚本.此脚本(也以CMake编写)将尝试检测库头文件和lib文件的位置,并将它们存储在一些CMake变量中,然后将其传递给相应的CMake命令,如include_directorIEs和target_link_librarIEs.

这种方法有两个问题:首先,您需要一个搜索脚本.幸运的是,CMake附带了Pthreads,Boost等几个搜索脚本,但是如果您使用的是更多异域的图书馆,那么您可能必须自己编写搜索脚本,这是一种神秘的体验.

第二个主要问题是搜索脚本没有返回结果的标准方法.虽然使用的变量有命名约定,但通常不适用.在实践中,这意味着您必须检查搜索脚本的来源以了解如何使用它.幸运的是,CMake附带的脚本大部分文档很好.

内置脚本位于< cmake-install-prefix> /share/cmake-2.8/Modules之类的位置.对于您的问题,请查看FindBoost.cmake和FindThreads.cmake文件(CMake应该自动链接到标准库). Anycorn已经提供了一些使用Boost脚本的示例代码,您需要知道的其他一切都是在CMake文档中或直接在搜索脚本文件中.

总结

以上是内存溢出为你收集整理的c – 从现有的Makefile创建CMakeLists文件全部内容,希望文章能够帮你解决c – 从现有的Makefile创建CMakeLists文件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1233246.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存