在构建我自己的项目时需要使用第三方makefile的一些帮助。包括使用cmake时的makefile
回答
有没有办法直接到你想要的。 CMake不提供将文件包含到生成文件中的功能。 (即:将一个“3rdparty.mk
”包含到CMake生成的Makefile
中。)您也不能直接在“CMakeLists.txt
”中包含“生成文件类型”(即:生成文件)。 CMake的ExternalProject不会让你这样做。
您需要做的是以某种方式“解析”具有您所需信息的生成文件。有很多方法可以做到这一点。例如,您可以编写一个shell脚本包装器,它可以根据需要为您的makefile生成grep文件,然后用您想要定义的变量构建一个CMake命令行,并输出它或者为您调用cmake
。根据您对shell(或perl,python等)的使用感觉如何,您可能会觉得这是最好的选择。
如果您知道这些值永远不会(或很少更改),您可以将它们硬编码到您的CMakeLists.txt
(不推荐)或文件中,您可以include()
(更好)。
你也可以留在CMake-land并使用CMake的ExternalProject来帮助你。使用ExternalProject,您可以:
- 获取您的第三方库(下载,复制,解压缩等)
- 修补这些图书馆的Makefile文件
- 运行
make
这些补丁的makefile
现在,我提到的这个补丁是你必须自己写的东西,并保持你的主要项目的来源。这个补丁的内容将成为一个新的目标,使编写一个文件,您可以通过include()
包含在您的CMakeLists.txt
中。你可以简单地开始,并有这个新的目标(例如:make output_variables
)写一个set()
命令列表lib_A.cmake
。对此感到满意后,你可以转向更复杂的输出;比如写一个CMake的find_package()
会理解的lib_A-config.cmake
文件。
当然,最后一个选项可能是最复杂的,但它可能会使您的主项目的维护更容易,减少将来的痛苦。您还将更深入地了解CMake。
- 1. 包括cmake的
- 2. Makefile包括SDL
- 3. 包括在CMake的
- 4. 包括与cmake的
- 5. 使用VPATH的Makefile欺骗和包括
- 6. 包括在Makefile中
- 7. Cmake其他包括
- 8. 包括通过CMake
- 9. 包括mysql到cmake
- 10. 包括在kreversi使用cmake(kdegames)lua库
- 11. Makefile中包括的.depend
- 12. 获得包括GNU的makefile
- 13. 检查包括在CMake的
- 14. 如何包括与cmake的
- 15. CMake的包括提高1.54
- 16. QMAKE Makefile中不包括myWidget.o
- 17. CMake包括预编译库
- 18. 包括OpenCV库DLL与CMake
- 19. 包括OpenCV与CMake Linux
- 20. 如何让CMake使用现有的Makefile?
- 21. 如何在CMake Makefile中包含OpenCV库
- 22. 使用cmake创建一个无cmake的Makefile
- 23. CMake,Xcode和Unix Makefile
- 24. 设置包括其他的makefile
- 25. Makefile的if语句不包括
- 26. 正确cmake的安装,包括头
- 27. CMake的 - 包括第三方文件
- 28. cmake的:如何生成包括头
- 29. 包括stb_image到CMake的OpenGL项目
- 30. CMake的:当包括外部生成
“我尝试使用以下内容,但它不起作用......”它不起作用?你期望发生什么?发生了什么? – nega
你必须告诉cmake如何解释gmake + makefile在做什么。 CMake不仅会奇迹般地导入一些随机字符串。它会如何知道这样做是正确的?它会如何安全地做到这一点?也许如果你提供了gmake + makefile输出的例子,你想用这个输出做什么? – nega
“干什么”是什么意思?只是打印到终端?用这些标志重建你的第三方库?将这些标志写入文件? – nega