工程中有 Direct3D 的 Shader 文件( *.hlsl
),Visual Studio 2015 会将其做为源文件编译。为避免其做为源文件,在 Visual Studio 2015 中可以在 Shader 文件的属性中,设置 Excluded from build
。
但 CMake
中无对应的选项,可以将文件对应的编译语言设置为 TEXT
,以欺骗 CMake
,让其以为有一种 TEXT
类型的编译语言。
set_source_files_properties(${TESTS_SHADER_ALU_SHADERS_SRCS} PROPERTIES LANGUAGE TEXT)
这种办法用在 Visual Studio 2015 的 *.sln
工程文件时,可以起作用。但是用在 NMake 的 Makefile 时,就会出如下错误:
CMake Error: Error required internal CMake variable not set, cmake may be not be built correctly.
Missing variable is:
CMAKE_TEXT_COMPILE_OBJECT
暂时还没有想到有好的解决办法。
参考:
通过设置 HEADER_FILE_ONLY 迂回处理:
http://cmake.3232098.n2.nabble.com/Excluded-from-build-td5630094.html
问题已经提交,但无人解决:
http://public.kitware.com/Bug/view.php?id=6314
https://public.kitware.com/Bug/bug_relationship_graph.php?bug_id=11902&graph=dependency