我正在尝试使用CMAKE_AUTOMOC属性自动查找和编译可moc文件。
然而,命令set(CMAKE_AUTOMOC ON)
还包括在Visual Studio“源文件”筛选器中生成的_automoc.cpp文件。这有两个问题:
- 即使以前没有使用过,它也会创建筛选器,因此会污染VS资源管理器。
- 它会将一个不应手动修改的附加文件添加到解决方案中,放在其他源文件中间。
我想知道是否可以:
1)防止CMake将此文件包含在Visual Studio筛选器中。我搜索并找到了https://cmake.org/Bug/print_bug_page.php?bug_id=13788。但是使用
SET_PROPERTY(GLOBAL PROPERTY USE_FOLDERS ON)
SET_PROPERTY(GLOBAL PROPERTY AUTOMOC_FOLDER automoc)
对我的问题没有做出任何改变。
2)使用CMake从.vcxproj.filters文件中删除给定的条目,使用类似以下命令:
source_group( "Source Files" FILES "filepath" )
这是用于将“文件路径”条目添加到“源文件”筛选器中的功能。
我目前正在使用CMake 3.5,VS 2015和Qt 5.6。以下是重现问题的CMake的简化版本:
project( myproj )
# Some stuff to include Qt libraries
# ...
set( CMAKE_AUTOMOC ON )
# These 2 lines don't change anything
SET_PROPERTY(GLOBAL PROPERTY USE_FOLDERS ON)
SET_PROPERTY(GLOBAL PROPERTY AUTOMOC_FOLDER automoc)
# Create project
add_executable( ${PROJECT_NAME} "main.cpp" )
在名为“源文件”的VS过滤器中,我可以看到main.cpp和myproj_automoc.cpp,这两个文件甚至在第一次编译之前都不存在(使用VS尝试打开它会出现错误“无法打开文件”)。在myproj.vcxproj.filters中有一个条目:
Include="C:\pathto\build\myproj_automoc.cpp">
<Filter>Source Files</Filter>
这里出现了我没有要求的内容。
我是否漏掉了什么?
谢谢你的帮助!