2013-07-26 31 views
0

我正在嘗試學習CMake,並且遇到了一個小小的呃聲。我有一個庫,有些像這樣的結構:CMake - 將文件包含在庫中而不會將其暴露給其他項目

LibProj 
| include 
| | public1.h 
| | public2.h 
| library 
| | public1.cpp 
| | public2.cpp 

現在,讓我們說,我想可能會或可能不會與我想只能由文件使用的.cpp文件關聯.h文件在圖書館內。也就是說,我不希望它暴露給使用該庫的項目。有沒有辦法做到這一點?

謝謝!

回答

2

典型的解決方案是內部的東西移動到另一個目錄:

LibProj 
| include 
| | public1.h 
| internal 
| | private1.h 

,然後只添加internal文件夾在你的庫中包含目錄,並確保它不會在install time複製。通常情況下,不允許從一個目錄中包含一個頭文件,但不允許另一個頭文件。大多數(如果不是全部)編譯器只允許指定包含目錄,而不是單個包含文件。