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

C++ 让CMake设置;“从构建中排除”;Visual Studio中单个源文件的选项,c++,visual-studio,cmake,C++,Visual Studio,Cmake,在Visual Studio中,每个源文件的“属性”页中都有一个“从生成中排除”选项,可以将该选项设置为从生成中排除该文件,但要使其在源代码树中可见: 有没有办法用CMake设置特定属性? 我找到了一处房产并尝试了一下,但没有成功(它似乎没有任何作用) 使用该属性的原因主要是为了将文件保留在项目中,以便能够从VisualStudio中打开和编辑该文件 提前谢谢 不幸的是,我也找不到如何在同一个项目中为使用cmake的某些文件设置“从构建中排除”的答案。目前,我已将所有此类文件添加到由创建的目标

在Visual Studio中,每个源文件的“属性”页中都有一个“从生成中排除”选项,可以将该选项设置为从生成中排除该文件,但要使其在源代码树中可见:

有没有办法用CMake设置特定属性? 我找到了一处房产并尝试了一下,但没有成功(它似乎没有任何作用)

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


提前谢谢

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

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

另一个选项是为不应编译的源设置属性:

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

在这种情况下,文件保留在项目中,但没有任何标记-这些文件在外观上与编译的文件没有区别,因为您可以使用CMake 3.18。这允许您设置您喜欢的任何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>

真的

只是不要在cmake中列出此文件。@v我不确定这是最简单的解决方案!但是,该文件应该出现在VS中的项目中,因此它必须以某种方式列在CMake中,不是吗?您可以在VS中打开该文件,即使它没有出现在任何解决方案中。正如我在上一篇评论中提到的:该文件应该是解决方案的一部分。我知道你可以在VS中打开任何文件,但这并不能回答我的问题?!
<FXCompile Include="C:\path\to\source\file\file.hlsl">
  <ExcludedFromBuild>true</ExcludedFromBuild>
</FXCompile>