2014-02-06 15 views
0

如何告訴編譯器,在CMake中特定庫是哪裏?CMake鏈接地圖集和llapack

例如,使用終端以下工作:

g++ main.cpp hmm.cpp -I /usr/include/atlas -L /usr/lib64/atlas/ -llapack -lblas 

但是,我怎麼有我的CMake的內部文件中的下列?

我使用的是ROS操作系統和目前有:

rosbuild_add_executable(build src/hmm.cpp) 

回答

1

尋找庫的傳統方法是使用find_package。通常需要提供FindLIBNAME。對於LAPACK,CMake already ships with one。對於圖集,你將不得不自己提供一個。

您可以使用它們像這樣:

find_package(LAPACK) 
if(LAPACK_FOUND) 
    target_compile_options(my_exe_target ${LAPACK_LINKER_FLAGS}) 
    target_link_library(my_exe_target ${LAPACK_LIBRARIES}) 
else() 
    # panick 
endif() 

通常find_package也將導出包括目錄,但是這似乎並沒有成爲FindLAPACK的情況下,這是非常奇怪的。您可能想要提供不吸引的版本,like this one

+0

感謝您的回覆。這是行不通的 – Phorce

+0

@ user1326876然後,不要贊成它,更準確地說什麼都行不通。 – pmr

+0

我對此表示讚賞,以表達我對你答案的讚賞。儘管如此,它確實有效,所以非常感謝。 – Phorce