Как использовать все *.c файлы в каталоге с системой сборки Cmake?

Я хочу найти все.c файлы в соответствии с каталогом и добавить их всех к файлам SRC для компиляции в cmake. Как я могу сделать это в CMakeList.txt.

для регулярных make-файлов я могу создать

SPECIFIED_SRC_FILE  = $(foreach d,$(SPECIFIED_SRC_DIRS),$(wildcard $(addprefix $(d)/*,*.c)))

но я не мог добраться, как сделать что-то вроде этого в CMakeList.txt.

52
задан Ciro Santilli 新疆改造中心法轮功六四事件 4 June 2018 в 04:51
поделиться

3 ответа

Попробуйте:

AUX_Source_Directory

Найти все исходные файлы в каталоге.

 aux_source_directory (переменная DIR)
 

собирает имена всех исходных файлов в указанном каталоге И хранит список в предоставленной переменной. Эта команда предназначена Для использования проектами, которые используют явную экземпляр шаблона. Файлы создания шаблонов могут храниться в «шаблонах» подкаталог и собирается автоматически с помощью этой команды, чтобы избежать вручную перечисление всех призваний.

Заманчиво использовать эту команду, чтобы избежать написания списка источника Файлы для библиотеки или исполняемой цели. Пока это, кажется, работает, Для CMake не может генерировать систему сборки, которая знает, когда Добавлен новый исходный файл. Обычно сгенерированная система сборки знает, когда ему нужно перегружать Cmake, потому что файл cmakelists.txt модифицирован, чтобы добавить новый источник. Когда источник просто добавлен к каталог без модификации этого файла, нужно было бы вручную Rerun Cmake, чтобы генерировать систему сборки, включающую новый файл.

49
ответ дан 7 November 2019 в 09:16
поделиться

Вы можете использовать AUX_Source_Directory , как описано @Whitequark, но он не будет работать, как вы ожидаете, поскольку Cmake не сможет определить, когда добавлены новые файлы (что является рода всей точкой с используя подстановочный знак).

0
ответ дан 7 November 2019 в 09:16
поделиться

Как насчет старых добрых подстановок?

FILE(GLOB MyCSources *.c)
ADD_EXECUTABLE(MyExecutable ${MyCSources})
56
ответ дан 7 November 2019 в 09:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: