CMake 旨在向用户隐藏构建/操作系统环境的详细信息。这需要跨平台/环境进行一些概括。因此,很难获得手工制作.vcxproj
项目的精确副本。
您可以将任何文件添加到 CMake 目标 - 明确包括非源文件 - 然后由 CMake 添加到生成的 IDE 项目。
如果我正确理解您的特定情况,问题是在源文件列表中获取工具名称Text
而不是None
工具名称。ItemGroup
从 CMake 3.7 版开始,您可以使用VS_TOOL_OVERRIDE
源文件属性来覆盖 CMake 对非源文件的默认设置。
下面的小例子:
cmake_minimum_required(VERSION 3.7)
project(HelloWorld)
file(WRITE main.cpp [=[
#include <iostream>
int main()
{
std::cout << "Hello World!" << std::endl;
}
]=])
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/asd/test.txt" "")
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/asd/asd2/test.txt" "")
add_executable(HelloWorld "main.cpp" "asd/test.txt" "asd/asd2/test.txt")
set_source_files_properties(
"asd/test.txt"
"asd/asd2/test.txt"
PROPERTIES VS_TOOL_OVERRIDE "Text"
)
确实给出了您预期的结果。CMake 默认只生成绝对路径。
参考