Совместимы ли CMake GLOB и source_group? - PullRequest
1 голос
/ 01 июня 2010

Я использую CMake 2.8.1 (в Windows) с генератором "Visual Studio 10". 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}, похоже, не содержит разделителей между именами файлов, а также не имеет кавычек или других разделителей, заключающих имена файлов, которые содержат пробелы. Это как-то связано с моей проблемой? Переименование всех каталогов, чтобы избежать пробелов, на самом деле не вариант.

1 Ответ

7 голосов
/ 01 июня 2010

Как говорится в сообщении об ошибке: Возможно, отсутствует ключевое слово FILES.

source_group( hello_group ${HELLO_SRCS} )

Должно быть:

source_group( hello_group FILES ${HELLO_SRCS} )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...