2015-05-28 2 views
2

У меня есть папка, содержащая файлы hpp и cpp. Мне нужно создать файл заголовка, который включает все файлы hpp в указанной папке:создать файл с использованием CMake

#pragma once 
#include "test_1.hpp" 
#include "test_2.hpp" 
#include "test_3.hpp" 

Может ли CMake сделать это?

Примечание: Я не собираюсь проводить «мои» исследования на вашем плече. Мне просто нужно знать, возможно ли такое, и, возможно, ссылку на то, где я могу читать. Мой первоначальный googling не показал ничего полезного. спасибо

ответ

5

Вы можете использовать configure_file, чтобы заполнить переменную внутри файла шаблона. Создайте файл шаблона, содержащий контур нужного файла и заполнитель для вашего включают заявления, например:

list.hpp.in

#pragma once 
@[email protected] 

Тогда в вашем CMakeLists.txt, вам может заполнить заполнитель @[email protected] списком файлов, завернутых операциями #include.

project(test) 
cmake_minimum_required(VERSION 2.8) 

# Get list of some *.hpp files in folder include 
file(GLOB include_files include/*.hpp) 

# Convert the list of files into #includes 
foreach(include_file ${include_files}) 
    set(include_statements "${include_statements}#include \"${include_file}\"\n") 
endforeach() 

# Fill the template  
configure_file(list.hpp.in list.hpp) 
+1

обычной практикой является добавление расширения .in к шаблону, который использует cmake. В вашем случае configure_file (list.hpp.in list.hpp) облегчает связь ввода с выходом. – ypx

+0

Хорошая точка, отредактированная. –

+0

Имейте в виду, что для этого решения требуется запуск CMake для отображения любых новых файлов, добавленных в каталог include. – ypx

Смежные вопросы