我正在使用带有"Visual Studio 10"
生成器的CMake 2.8.1(在Windows上)。 GLOB
和source_group
似乎无法合作。有没有办法让这个工作?
我使用file( GLOB ... )
创建.cpp
个文件列表,然后使用source_group
在生成的Visual Studio项目中创建过滤器:
# C:\Users\My Name\hello\CMakeLists.txt
cmake_minimum_required( VERSION 2.8 )
project( hello_proj )
file( GLOB HELLO_SRCS *.cpp )
message( "HELLO_SRCS="${HELLO_SRCS} )
#source_group( hello_group ${HELLO_SRCS} ) #line 6: uncomment to get error
add_executable( hello_exec ${HELLO_SRCS} )
第6行注释掉,项目生成正常:
C:\Users\My Name\hello>cmake .
HELLO_SRCS=C:/Users/My Name/hello/hello.cppC:/Users/My Name/hello/print_line.cpp
-- Configuring done
-- Generating done
-- Build files have been written to: C:/Users/My Name/hello
第6行未注释,我收到错误:
C:\Users\My Name\hello>cmake .
HELLO_SRCS=C:/Users/My Name/hello/hello.cppC:/Users/My Name/hello/print_line.cpp
CMake Error at CMakeLists.txt:6 (source_group):
source_group Unknown argument "C:/Users/My Name/hello/hello.cpp".
Perhaps the FILES keyword is missing.
-- Configuring incomplete, errors occurred!
我注意到${HELLO_SRCS}
的输出值似乎不包含文件名之间的任何分隔符,也没有包含空格的文件名的引号或其他分隔符。这与我的问题有什么关系吗?重命名所有目录以避免使用空格实际上不是一种选择。
答案 0 :(得分:7)
正如错误消息所示:可能缺少FILES关键字。
source_group( hello_group ${HELLO_SRCS} )
应该是:
source_group( hello_group FILES ${HELLO_SRCS} )