2015-05-28 86 views
2

我有一個包含hpp和cpp文件的文件夾。我需要創建一個包含所述文件夾中所有hpp文件的頭文件:使用CMake創建包含文件

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

可以CMake做到這一點嗎?

注:我不打算把'我的'研究工作放在你的肩膀上。我只需要知道這樣的事情是否可能,以及可能的鏈接到我可以閱讀的地方。我最初的Google搜索沒有顯示任何有用的信息。 謝謝

回答

5

您可以使用configure_file來填充模板文件中的變量。創建一個包含所需文件的輪廓和您的包含語句的佔位符,例如模板文件:

list.hpp.in

#pragma once 
@[email protected] 

然後,在你的CMakeLists.txt,你可以使用包含#include語句的文件列表填充佔位符@[email protected]

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