2014-03-04 57 views
1

我使用cmake編譯結構如下項目:如何在#include上使用名稱前面的庫名稱?

  • 力霸
    • INC
    • SRC
  • LibB
    • INC
    • SRC
  • 的main.cpp

我對每個libx中,每個src和根文件夾CMakeLists。

我的項目正在編譯和按預期工作。但我想包含標頭: 包含「{LibX}/{header} .h」而不是「{header} .h」,而不是將絕對/相對路徑添加到標頭。

因爲我在CMakeLists中設置了所有包含的目錄,所以我可以簡單地包含一個包含它的名稱的頭文件,但那不是最好的解決方案。

例如,我的main.cpp依賴於LibA和LibB,而LibA依賴於LibB,這是一個數學庫。我很高興知道每次從哪個庫中獲得頭文件。

謝謝

回答

2

Root/LibA/inc/LibA/MyHeaderFileFromA.h

#include <LibA/MyHeaderFileFromA.h> 

你去那裏

+0

不要忘了提權'-I'選項... –

+0

謝謝!這是一種方法,但這個額外的目錄有點「醜陋」。我的意思是,我已經在LibA的領域,爲什麼我應該在它的include目錄裏面指定另一個目錄來放置它的頭部=# –

+0

'#include'需要匹配路徑。您可以在Root下創建一個名爲'includes'的額外文件夾,其中包含指向LibA/inc(稱爲鏈接「LibA」)和LibB/inc(稱爲鏈接「LibB」)的軟(或硬)鏈接。你有控制文件格式嗎?這種結構是通過源代碼控制強加給你的嗎? –

相關問題