Maintaining Makefiles and CMakeLists.txt
Maintaining Makefiles and CMakeLists.txt
当您与大量人一起工作时,维护Makefiles
和CMakeLists.txt
都可能非常困难。我知道CMakeLists.txt
可以生成Makefiles
,但假设我想使用make
来编译代码,并同时使用IDE具有一种Intellisense。我该如何实现?
在我要描述的情况下,CMakeLists.txt
文件将消失,因此我没有机会与它们生成解决方案。
cmake不是构建经理!
它是其他构建经理的文件的生成器!
因此,您可以生成IDE(Visual Studio,Xcode,CodeBlocks,..)或生成Makefile的项目,或者您喜欢的任何内容以及CMAKE支持。因此,我不明白为什么您同时维护CMakeLists.txt
和Makefiles
。只需维护CMakeLists.txt
,然后从中生成各自的Makefiles
。
有关详细信息,请参见CMAKE文档 - 生成器:
命令行构建工具生成器
这些生成器支持命令行构建工具。为了使用它们,必须从命令行提示中启动CMAKE,其环境已经为所选编译器配置并构建工具。
- Borland Makefiles
- msys makefiles
- mingw makefiles
- nmake makefiles
- nmake makefiles jom
- 忍者
- Unix Makefiles
- watcom wmake
底线您应该能够为iDE或makefile生成您喜欢的构建管理器而没有任何并发症的文件。
在我要描述的情况下,
CMakeLists.txt
文件将消失,因此我没有机会与它们生成解决方案。
wat?您正在做一些非常奇怪的事情,而且很可能是错误的,但您没有提供任何细节。
关于Intellisense,我会说:
-
Visual Studio 2017作为CMAKE的内置支持,请参见公告
-
cmake可以使用所有命令生成一个JSON文件,请参见 cmake_export_compile_commands 因此,您可以使用它在vim
中具有基于智能的曲折完成 qtCreator作为CMAKE的内置支持,因此您也可以完成。
首先要额外的提示:在整个项目的整个过程中不要尝试混合手工制作的make
文件和CMake
。
正常方法是使用CMAKE创建制造文件。额外的cmake是跨平台,在您的情况下, nativ 支持某些IDE,例如。QTCreator,Clion(Awaik)。对于广泛的其他IDE CMAKE可以生成项目文件。
使用qtCreator的示例工作流程:
- 创建一个简单的cmakelists.txt,至少用项目的名称
- 将其加载到qtcreator
- 添加源文件,从qtcreator中更新cmakelists.txt
- 从QTCreator中构建,重复
但是,将使用相同的CMakeLists.txt
在命令行上创建Make File。或在您的构建服务器或CI系统上。
- 在CMakeLists.txt的安装功能中使用.cmake文件有什么用
- CMakeLists.txt中的命名空间表示法
- 将生成文件转换为 CMakeLists.txt等效项
- CMake 错误"源似乎不包含 CMakeLists.txt",路径/库连接问题
- 直接传递编译选项(绕过 CMakeLists.txt)
- 如何在 CMakeLists.txt Qt Creator 中包含头文件?
- 了解编写 CMakeLists.txt
- 如何制作 cmakelists.txt编译使用在其他地方声明和实现的函数和类的 CPP
- 将目录添加到没有 CMakeLists.txt 的 CMake 项目
- 如何在 CMakeLists.txt for Visual Studio 2019 中启用 clang-tidy?
- CMakeLists.txt structure
- 在CMakeLists中包含目录的更好方法.txt
- CMakeLists.txt:(add_executable):没有给目标提供来源:教程
- 如何将opencv包添加到CMakelists.txt
- 如何在不更改CMakeLists.txt的情况下(可能通过CLI)将CFLAGS和CXXFLAGS传递给cmake
- 如何在CMakeLists.txt中正确设置CMake标志
- 如何为 UnitTest++ 项目编写 CMakeLists.txt 文件
- 设置诊断:插入符号来自 CMakeLists.txt
- cmake find_package CMakeLists.txt 子文件夹中的相对路径
- 在cmakelists.txt中链接GSL