如何在CMake中隐藏某些目标?

时间:2010-11-02 17:11:48

标签: c++ configuration cmake

我有一个库是作为基于CMake的项目的一部分构建的。这个库有很多目标,我不想看到它们出现在我的目标列表中(在Visual Studio或QtCreator下)。有没有办法让我将这个库构建为我的项目构建的一部分(kindda就像依赖构建一样)但是没有看到这个库的可用目标?

3 个答案:

答案 0 :(得分:0)

我的解决方案是让CMake执行一个shell命令来构建我需要的依赖项,而不是调用add_subdirectory。它并不优雅,但却击败了所有这些不受欢迎目标造成的视觉污染。

答案 1 :(得分:0)

目前几乎没有明确支持在这些IDE中隐藏特定目标。 CMake(尚)不支持“显示/隐藏目标”选项。但是,有一种方法可以避免在Visual Studio中滚动浏览长长的目标列表。您可以将目标与IDE文件夹分组。 CMake通过在特定目标上设置FOLDER属性来支持此功能。

首先,通过将以下行添加到顶级CMakeLists.txt文件中,告诉CMake启用IDE文件夹:

set_property(GLOBAL PROPERTY USE_FOLDERS ON)

然后,通过设置FOLDER属性将目标组织到文件夹中。

# Put these targets in the 'HiddenTargets' folder in the IDE.
set_target_properties(SillyLib1 SillyLib2 DontCareLib1 PROPERTIES FOLDER HiddenTargets)
# Put these targets in the 'AppTools' folder in the IDE.
set_target_properties(WriterLib1 ReaderLib1 AwesomeLib42 PROPERTIES FOLDER AppTools)

现在,您的CMake目标将放置在Visual Studio 解决方案资源管理器中的HiddenTargetsAppTools文件夹中。您可以折叠包含不想看到的目标的文件夹,或者完全隐藏该文件夹(通过右键单击该文件夹,然后选择隐藏文件夹)。目标仍将可用(并在必要时进行构建),只是在 Solution Explorer 中不可见。您可以通过右键单击解决方案,然后选择取消隐藏文件夹来取消隐藏文件夹。


据我所知,Qt Creator不支持此功能。但是,在2017年,他们使用类似的request来隐藏CMake目标。通常,此错误修复程序(在Qt Creator 4.4.0及更高版本中实现)清除了受污染的目标视图(删除了 Source Directory 列表),并改进了其隐藏生成的文件 >和隐藏空文件夹功能,使用户可以更好地控制项目列表中显示/隐藏的内容。

答案 2 :(得分:-1)

你知道ExternalProject_Add命令吗?它允许您描述要作为先决条件构建的库的构建(以及下载,修补,安装......)步骤 你自己的项目。使用此命令将您的库显示为make / Visual Studio / QtCreator中的单个目标。