繁体   English   中英

让 CMake 为 Visual Studio 中的单个源文件设置“从构建中排除”选项

[英]Let CMake set the "Exclude From Build" option for a single source file in Visual Studio

在 Visual Studio 中,每个源文件的属性页面中都有一个“从构建中排除”选项,可以将其设置为从构建中排除文件,但使其在源树中保持可见:

截图属性页

有没有办法用 CMake 设置该特定属性? 我找到了一个VS_DEPLOYMENT_CONTENT属性并尝试过但没有成功(它似乎没有做任何事情)。

使用该属性的原因主要是为了将文件保留在项目中,以便能够从 Visual Studio 中打开和编辑它。

提前致谢!

不幸的是,我也找不到如何在同一项目中使用 cmake 为某些文件设置“从构建中排除”的答案。 现在,我已将所有此类文件添加到由add_custom_target创建的目标中。

if(MSVC)
  add_custom_target(myproj.additional SOURCES ${otherHeaders} ${otherSources})
endif()

这将在解决方案中创建一个额外的项目。 该项目中的文件将无法编译,我仍然可以在其中进行编辑和搜索。

另一种选择是为不应编译的源设置HEADER_FILE_ONLY属性:

if(MSVC)
  set_source_files_properties(${otherSources} PROPERTIES
    HEADER_FILE_ONLY TRUE
  )
endif()

在这种情况下,文件保留在项目中但没有任何标记 - 这些文件的外观与编译的文件没有区别

从 CMake 3.18 开始,您可以使用VS_SETTINGS 这允许您设置您喜欢的任何 VS 项目设置。

set_property(SOURCE ${SourceFiles} PROPERTY VS_SETTINGS "ExcludedFromBuild=true")

请注意,您必须使用 vcxproj 文件中写入的名称来设置设置值。 要了解设置的名称,您可以通过 VS IDE 将设置设置为正确的值,保存项目,然后在文本编辑器中打开 vcxproj 文件并搜索正确的设置值对。 例如,在从构建中排除的情况下:

<FXCompile Include="C:\path\to\source\file\file.hlsl">
  <ExcludedFromBuild>true</ExcludedFromBuild>
</FXCompile>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM