因此,似乎有很多关于Autotools与CMake的主题的书写,但对于我来说,我似乎无法找到关于如何将项目从Autotools到CMake。有人知道吗?将Autotools转换为CMake的教程
回答
有如何(续)没有自动该工具可以将任意构建系统从autotools转换为cmake。我已经手动转换了一些中等大小的项目。我喜欢为每组configure.ac
和/或Makefile.am
文件创建一个CMakeLists.txt
文件,以简化从autotools到cmake的转换。
不幸的是,这种手动方法需要在两个系统中开发专业知识,其中任何一个都不应该造成任何无辜。
记录您的机器上实际执行的自动工具创建的内容。这将帮助您验证您的CMake构建系统是否使用相同的编译标志实际编译每个文件,并创建autotools执行的每个库和可执行文件;至少在你的机器上,有你的选择。
%的./configure [配置选项]> configure_autotools.log
%化妆> make_autotools.log
%使安装> make_install_autotools.log
在每一个目录包含一个
configure.ac
或Makefile.am
文件,包括项目根目录,新建一个空的CMakeLists.txt文件。将cmakeadd_subdirectory
(...)命令添加到每个非叶CMakeLists.txt文件,以将所有cmake文件链接到树结构中。将cmake project()和cmake_minimum_required()命令添加到顶级CMakeLists.txt文件的顶部。project(MyProject) cmake_minimum_required(VERSION 2.8) add_subdirectory(foo)
您现在有一个一致的,但没用的CMake构建系统,什么也不做。在更深的CMakeLists.txt文件中临时添加一些
message(...)
命令以验证所有内容是否正确连接。请记住,在调试cmake配置问题时,message()
是您的朋友。确保您的cmake基础架构通过现在尝试构建而工作。什么都不会建立或安装;但此时锻炼cmake基础设施很有价值。%的mkdir build_cmake
%CD build_cmake
%ccmake -i [项目根]
[配置,配置,生成]
%使VERBOSE = 1
%make install
这是最难的部分。逐个填写您的CMakeLists.txt文件。下面是一些指导原则:
打开两个并排侧编辑器,一个用的CMakeLists.txt文件,其他与相应的Makefile.am/configure.ac文件。
让您的浏览器开启至cmake commands documentation。
而不是从最顶部开始,通过建立一个小型图书馆或可执行文件,如果你能找到一个项目(cmake的
add_library()
或add_executable()
)创建cmake的规则开始。使用这种方法,您可以一次构建您的转换。在添加每个目标时,定期测试您的cmake构建系统。
我喜欢使用cmake
file(GLOB ...)
命令来紧凑地创建源文件列表。请注意,这是一个有争议的观点。许多常见的自动工具节都有相应的CMake commands。例如autoconf AC_TRY_COMPILE可以转换为cmake TRY_COMPILE。但大多数情况下,我发现我必须了解每个小自动工具节所做的事情,并弄清楚如何编写相应的cmake。此外,还有一个series of CMake modules可帮助创建类似于autotools的config.h文件。 Makefile.am文件通常更易于转换,并且在转换为cmake之后实际上可以变得更紧凑。
将您的cmake生成结果与您在步骤1中捕获的autotools日志进行比较。编译标志是否相同?是否所有的目标都是相同的?是否安装了相同的文件?
不幸的是,我最近没有将autotools转换为cmake,所以我不能全面地编写“如果您在Makefile.am中看到x,请在CMakeLists.txt中编写y”。有人可以为公开wiki提供一个好的位置,那些正在积极从autotools转换到cmake的人可以积累一套完整的这样的指南吗?我不知道这是否计算器的回答是这样的列表最好的地方......
对于额外的信用,一旦你拥有这一切的工作,调整你的cmake的规则,能够构建和运行您的项目从Windows Visual Studio。尝试用autotools!
这个转换是非常项目特定的,这使得编写一个普遍适用的教程很困难。
下面是一些工具的开始,可能会给你一些启示。
http://www.vtk.org/Wiki/CMake#Converters_from_other_buildsystems_to_CMake
===== 与此相关的一个有趣的文章:
为什么KDE项目切换到CMake的 - 和 http://lwn.net/Articles/188693/
我看到了那些。但是他们只是特别的KDE,所以我没有发现它们有帮助。 –
- 1. Autotools vs CMake
- 2. 将Makefile转换为CMake
- 3. opengl教程xcode cmake
- 4. 如何将qmake转换为cmake?
- 5. 有什么好的教程将HTML + CSS转换为WordPress?
- 6. 如何将JavaScript代码转换为jQuery视频教程?
- 7. autotools或cmake用于编译C
- 8. 将项目转换为qt5和cmake未定义的引用'vtable for qt5和cmake
- 9. 在CMake中将字符串的一部分转换为大写
- 10. 将qmake转换为cmake时的链接错误
- 11. 使用外部库将制作转换为CMake
- 12. 使用Flex和Bison将Makefile转换为CMake
- 13. 如何将.ino Arduino项目转换为CMake?
- 14. Q_OBJECT在将qmake项目转换为cmake时未指定类型
- 15. CMake正则表达式将小写字母转换为大写
- 16. 任何人都可以发布jtidy的教程链接,将xhtml转换为xml
- 17. 音乐商店2教程 - VB转换
- 18. 保存教条记录时将日期转换为字符串
- 19. 将C++程序转换为程序集
- 20. 将C程序转换为程序集?
- 21. 将方程转换为java的android?
- 22. 将html转换为图像的程序
- 23. 将DataRow []转换为DataTable的ASP.NET转换
- 24. cmake到日食的转换问题
- 25. 将MS Access.adp转换为ASP.Net转换:DLookup转换为SQL
- 26. 无法将C程序转换为Ruby
- 27. 程序将数字转换为文字
- 28. 将shell脚本转换为python程序
- 29. 将Java应用程序转换为Applet
- 30. 将WPF应用程序转换为Silverlight
我不想要一个自动工具。这是我正在寻找的那种确切的讨论和一般建议。例如,“我喜欢为每组configure.ac和Makefile.am文件创建一个CmakeLists.txt firl”。如果你能详细说明这一点,我会奖赏你的奖金。 –
@KurtisNusbaum:我编辑了我的答案,详细阐述了我所经历的过程,包括步骤和更多指导方针。这样更有用吗? –
这是迄今为止我见过的最好的。不过,我真的很想看到“如果你在Makefile.am中看到x,请在CMakeLists.txt中写下y”。如果有人发现,请告诉我。 –