Автоматически добавить все файлы в папке к цели с помощью CMake?
Я рассматриваю возможность переключения кросс-платформенного проекта из отдельных систем управления сборкой в Visual C++, XCode и makefiles в CMake.
одна важная функция, которая мне нужна, - Это автоматическое добавление всех файлов в каталог к цели. Хотя это легко сделать с make, это нелегко сделать с Visual C++ и XCode (поправьте меня, если я ошибаюсь). Можно ли это сделать непосредственно в CMake? Как?
Не стесняйтесь добавлять любую другую вещь, о которой я должен знать раньше собираюсь изучить CMake, учитывая, что в настоящее время проект среднего размера (8 библиотек, 2 исполняемых файла, 8 тестовых проектов и это зависит от около 8 внешних библиотек).
2 ответа:
это возможно. Например, с
file(GLOB
:cmake_minimum_required(VERSION 2.8) file(GLOB helloworld_SRC "*.h" "*.cpp" ) add_executable(helloworld ${helloworld_SRC})
обратите внимание, что для этого требуется руководство повторный запуск
cmake
если исходный файл добавлен или удален, так как сгенерированная система сборки не знает, когда просить CMake регенерировать, и делать это при каждой сборке увеличит время сборки.
ответ Клейста, конечно, работает, но есть важный нюанс:
когда вы пишите
Makefile
вручную, вы можете создатьSRCS
переменной с помощью функции выделить все.cpp
и.h
файлы. Если исходный файл будет добавлен позже, повторно запуститеmake
будет включить его.однако, CMake (с командой, как
file(GLOB ...)
) будет явно генерировать список файлов и поместить его в автоматически сгенерированныйMakefile
. Если у вас есть новый исходный файл, вам понадобится чтобы повторно сгенерироватьMakefile
при повторном запускеcmake
.edit: нет необходимости удалять файл Makefile.