2016-05-21 22 views
0

在GNU/Linux上,約定是將庫的名稱(我們稱之爲foo)傳遞給不帶lib前綴的target_link_libraries(否則它會嘗試鏈接liblibfoo 。所以)。然而,在Windows中,當我要求鏈接「foo」時,它試圖找到不存在的「foo.lib」,因爲該庫名爲libfoo.lib。有沒有辦法指示cmake添加lib前綴,而不訴諸另一個如果(WIN32)塊?cmake:如何鏈接一個在Windows上具有lib前綴的庫

回答

1

使用命令find_library搜索庫的絕對路徑。你可以用NAMES選項指定搜索庫中的所有可能的名字:

find_library(FOO_LIBRARY NAMES foo libfoo) 

那麼對於鏈接使用結果這個命令與庫:

target_link_libraries(my_exec ${FOO_LIBRARY}) 
+0

不,我說的是庫沒有cmake的模塊。 –

+0

沒有涉及CMake模塊。命令'find_library'是CMake的內部函數,就像'target_link_libraries'本身一樣。 – Tsyvarev

+0

謝謝,我誤解了。我以爲你說find_package出於某種原因。我不知道find_library的確找到了這個庫。不過,我不喜歡它將它與完全絕對路徑聯繫起來,所以我認爲我會堅持現在的條件。 –