CMake GLOB和source_group是否兼容?

时间:2010-06-01 04:19:48

标签: cmake

我正在使用带有"Visual Studio 10"生成器的CMake 2.8.1(在Windows上)。 GLOBsource_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}的输出值似乎不包含文件名之间的任何分隔符,也没有包含空格的文件名的引号或其他分隔符。这与我的问题有什么关系吗?重命名所有目录以避免使用空格实际上不是一种选择。

1 个答案:

答案 0 :(得分:7)

正如错误消息所示:可能缺少FILES关键字。

source_group( hello_group ${HELLO_SRCS} )

应该是:

source_group( hello_group FILES ${HELLO_SRCS} )