2017-04-17 117 views
0

我有一個大的CMake解決方案,其中包含5個項目。在這1個項目中創建主要可執行文件,其餘4個(3個靜態+ 1個動態)項目創建鏈接到主項目的庫。CMake解決方案子目錄

MainSolution: 
|-MainExecutablePrj 
|-StaticLib_1Prj 
|-StaticLib_2Prj 
|-StaticLib_3Prj 
|-DynamicLib_1Prj 

整個項目要建立Windows和Linux平臺。現在我需要在MainSolution下創建一個Sub目錄,並創建一些使用DynamicLib_1(.lib/.so)的testcase項目。到目前爲止,我所做的是我將爲每個測試用例提供不同的解決方案,並複製所需的.h文件和.lib(.so)文件並構建測試用例解決方案。

對於我來說,維護源代碼非常困難,並且每當動態庫發生變化時,我需要複製所有必需的文件並重新構建測試用例。 所以我想在我的主項目中包含測試用例解決方案,以便每當我更改動態庫項目時,它也會構建測試用例項目。

我非常清楚將這些測試案例解決方案作爲MainSolution下的項目添加,但我想創建子目錄並將所有測試用例項目放在該文件夾下。

MainSolution: 
|-TestCasesFolder 
    |-TestCase_1Prj 
    |-TestCase_2Prj 
    |-... 
|-MainExecutablePrj 
|-StaticLib_1Prj 
|-StaticLib_2Prj 
|-StaticLib_3Prj 
|-DynamicLib_1Prj 

有人可以幫助我在此

+0

只是讓測試用例'target_link_library'到所需的庫。只要你對圖書館作出改變,他們就會被製作出來。 –

回答

0

它不應該是必要複製任何文件。

  • 讓CMake的找到建庫與find_library和提示添加到子目錄的路徑建立文件夾
  • 讓CMake的包括從include_directories您的子項目的頭文件。添加前綴以使其與平臺無關。

關於測試: 子項目的所有單元測試都應放置在此項目結構中,而不是在根項目中。將所有集成測試作爲根項目的一部分放入根項目或單獨的測試項目中。

Example Structure