我们使用CMake为Visual Studio 2008生成解决方案文件。除了构建库和可执行文件的常规源项目之外,我还希望有一个仅包含配置文件的项目。这些文件用于在运行时配置项目的行为。他们不需要构建项目,但将它们包含在解决方案中可以方便地编辑这些文件。我能做到这add_custom_target
使用像这样:如何让CMake创建一个仅包含配置文件的Visual Studio项目?
file(GLOB ini_files ${PROJECT_SOURCE_DIR}/../config/ini/*)
source_group(ini FILES ${ini_files})
file(GLOB xml_files ${PROJECT_SOURCE_DIR}/../config/xml/*)
source_group(xml FILES ${xml_files})
add_custom_target(config SOURCES ${ini_files} ${xml_files})
这给了我一个包含配置文件的子文件夹的“配置”项目。但是,还有一个名为“config”的链接指向一些不存在的文件。我认为这应该是这个规则创建的目标的链接。由于没有什么可以建立的,这仍然是一个死路。现在我的问题是:
- 是add_custom_target正确的方式来实现我想要的? 如果不是,那么更好的解决方案是什么?
- 如果是正确的方法,我该如何摆脱与目标名称的链接?另外,我想删除“CMake Rules”文件夹以使配置项目尽可能地干净。
谢谢你这个有见地的答案。将这些文件添加到现有的项目中,我自己记住了;但问题是,这些项目实际上构建了我们项目外部框架使用的模块(动态库,dll或其他文件)。所以也许会把配置文件放到它们所属的模块中;有些被多重使用。还有一些文件将框架配置为使用模块,因此不会被任何模块读取。我知道,对于Unix Makefiles来说这没有用,但是这个项目的唯一目的是将配置文件添加到VS. – ahans
@ahans没有什么能阻止你在多个项目中包含文件。开销很小,因为没有文件会被复制。 – SirDarius
有趣的一点。这并不能解决配置框架的文件问题。我会牢记这一点,可能会在某些时候派上用场。现在我通过使用'add_library'解决了这个问题。这正是我想要的。 – ahans