如何告诉编译器,在CMake中特定库的位置是什么?
例如,使用终端以下作品:
g++ main.cpp hmm.cpp -I /usr/include/atlas -L /usr/lib64/atlas/ -llapack -lblas
但是,如何在我的CMake文件中包含以下内容?
我正在使用ROS操作系统,目前有:
rosbuild_add_executable(build src/hmm.cpp)
答案 0 :(得分:2)
查找库的传统方法是使用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也会导出include目录,但FindLAPACK
似乎不是这种情况,这真的很奇怪。您可能希望提供一个不吸吮的版本like this one。