Автоматически добавлять все файлы в папке к цели с помощью CMake? - PullRequest
134 голосов
/ 08 июля 2010

Я рассматриваю возможность переключения кроссплатформенного проекта с отдельных систем управления сборками в Visual C ++, XCode и make-файлах на CMake.

Одна важная функция, которая мне нужна, - это автоматическое добавление всех файлов в каталоге к цели.Хотя это легко сделать с помощью make, это нелегко сделать с помощью Visual C ++ и XCode (поправьте меня, если я ошибаюсь).Возможно ли сделать это непосредственно в CMake?Как?

Ответы [ 2 ]

191 голосов
/ 08 июля 2010

Это возможно.Например, file(GLOB:

cmake_minimum_required(VERSION 2.8)

file(GLOB helloworld_SRC
    "*.h"
    "*.cpp"
)

add_executable(helloworld ${helloworld_SRC})

Обратите внимание, что для этого требуется ручное повторное выполнение cmake, если исходный файл добавлен или удален, поскольку сгенерированная система сборки не знаеткогда просить CMake регенерировать, и выполнение этого при каждой сборке увеличивает время сборки.

30 голосов
/ 16 августа 2012

Ответ от Kleist, конечно, работает, но есть одна важная оговорка:

Когда вы пишете Makefile вручную, вы можете сгенерировать переменную SRCS, используя функцию для выбора всех файлов .cpp и .h. Если исходный файл будет добавлен позже, повторный запуск make включит его.

Однако CMake (с такой командой, как file(GLOB ...)) явно сгенерирует список файлов и поместит его в автоматически сгенерированный Makefile. Если у вас есть новый исходный файл, вам нужно будет заново сгенерировать Makefile, повторно запустив cmake.

edit: не нужно удалять Makefile.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...