2016-06-14 17 views
-1

相關庫的項目,我有兩個cmake的項目:如何構建庫或可執行的二進制項目與cmake的

BiosPatcher\CommonBase\ 
BiosPatcher\Bios\ 

首先建立一個圖書館和有頭./include文件夾。 如何構建第二個項目庫(或可執行文件),它依賴於第一個庫./include進行編譯,libCommonBase.dll執行(可執行文件構建的情況下)。

我已經包含頭文件一樣,

include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../CommonBase/include) 

和它的作品。

我鏈接庫這樣的:

target_link_libraries (Bios libCommonBase) 

但我收到錯誤消息:

c:\Users\Sakhno\workspace\BiosPatcher\Bios\build>make 
[ 16%] Linking CXX shared library libBios.dll 
C:/mingw-w64/mingw32/bin/../lib/gcc/i686-w64-mingw32/5.3.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -llibCommonBase 
collect2.exe: error: ld returned 1 exit status 

我想我需要以某種方式指定文件夾中查找庫,但我不知道如何。

+0

至少我需要如何正確地包括頭 – Vyacheslav

+2

什麼是錯的使用命令[include_directories(https://cmake.org/cmake/help/v3.0/command/include_directories.html)設置包括目錄和[target_link_libraries](https://cmake.org/cmake/help/v3.0/command/target_link_libraries.html)用於鏈接庫? – Tsyvarev

+0

分享你的研究可以幫助每個人。請告訴我們您嘗試過什麼,以及爲什麼它不符合您的需求。這表明你已經花時間去嘗試幫助自己,它使我們避免重申明顯的答案,最重要的是它可以幫助你得到更具體和相關的答案!另請參閱[如何問](http://stackoverflow.com/questions/how-to-ask) – Florian

回答

0

我能夠通過添加以下幾行來建立依賴於CommonBase項目目標庫的Bios項目。

set(COMMON_BASE_PROJECT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../CommonBase) 

... 
include_directories(${COMMON_BASE_PROJECT_DIR}/include) 

... 
target_link_libraries (Bios ${COMMON_BASE_PROJECT_DIR}/build/libCommonBase.dll) 
+0

要獲得如何構建依賴項目依賴項的代碼請參閱問題:http://stackoverflow.com/questions/37838786/how-to-not-make-install-step-when-building-external-project-with-cmake – Vyacheslav

相關問題