2014-09-13 58 views
1

我使用find_package將外部庫包含到我的CMake項目中。因爲我想添加對靜態鏈接的支持,所以我設置了set(BUILD_SHARED_LIBS FALSE)。但是,我仍然可以使用像libglew32.dll.a這樣的庫,它們只是使動態鏈接更容易的包裝。相反,我想讓CMake找到存在於同一目錄中的libglew32.a。這是我使用的module to find GLEW如何讓CMake找到真正的靜態庫而不是動態包裝?

回答

3

你總是可以鏈接到一個確切的圖書館使用文件名。這是一個標誌,你會用

-l:[filename] 

對於cmake的

target_link_libraries(target :libglew32.a) 
+0

瞭解的東西,每天新..迫不及待地嘗試了這一點... – Begui 2014-09-15 19:56:53

2

在Linux上這樣做會使用所有靜態庫

set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES}) 

,如果你正在構建外部庫,通常我只是將它們包含在我的目標

target_link_libraries(myprogram 
     ${LIBROCKET_LIBS_DIRS}/libRocketCore.a 
     ${LIBROCKET_LIBS_DIRS}/libRocketControls.a)