2012-07-18 89 views
5

我正在嘗試使用C++庫中的CMake,但是我遇到了一些麻煩,試圖輕鬆地在同一個源代碼樹中構建應用程序而不需要很多額外的CMake代碼。很容易在cmake中包含頭文件庫依賴關係

源樹的佈局基本上是以下內容:

ROOT 
    libs/ 
     lib1/ 
     lib2/ 
     lib3/ 
    apps/ 
     app1/ 
     app2/ 
     app3/ 

文庫是相互獨立的,並且應用可以針對一個或多個庫的鏈接。

目前我有一個根CMakeLists.txt,列出每個應用程序和庫作爲一個子目錄,以便如果庫被更改,應用程序被重建,庫也是如此。這工作正常,CMake鏈接它,而不必指定庫的位置,但我沒有看到爲include目錄做類似的工作。

有沒有一種常見的方法來處理這個問題?我不希望每個應用程序的CMakeLists.txt都不得不手動列出它需要的庫的路徑。

回答

1

如果您不擔心爲每個應用程序提供比實際需要更多的標頭,則可以在INCLUDE_DIRECTORIES語句中列出所有lib目錄,例如在CMakeListst.txt中添加所有的應用程序子列表。但是,沒有這樣的管理每個目標內置的「歸屬」包含文件夾的概念。