Sophus库为例:

find_package(Sophus REQUIRED)

include_directories(${Sophus_INCLUDE_DIRS})

target_link_libraries(useSophus ${Sophus_LIBRARIES})

我们怎么知道要连接Sophus_INCLUDE_DIRS,Sophus_LIBRARIES,而不是SOPHUS_INCLUDE_DIRS,SOPHUS_LIBRARIES或其他,其实

find_package主要是找到.cmake文件,然后这些变量在.cmake 里面定义了,我们看Sophus/SophusConfig.cmake:

# Sophus source dir

set( Sophus_SOURCE_DIR "/home/xxx/slamcode/ch4/Sophus")

 

################################################################################

# Sophus build dir

set( Sophus_DIR "/home/xxx/slamcode/ch4/Sophus")

 

################################################################################

set( Sophus_INCLUDE_DIR  "/home/xxx/slamcode/ch4/Sophus;/usr/include/eigen3" )

set( Sophus_INCLUDE_DIRS  "/home/xxx/slamcode/ch4/Sophus;/usr/include/eigen3" )

 

set( Sophus_LIBRARIES    "/home/xxx/slamcode/ch4/Sophus/libSophus.so" )

set( Sophus_LIBRARY      "/home/xxx/slamcode/ch4/Sophus/libSophus.so" )

 

set( Sophus_LIBRARY_DIR  "/home/xxx/slamcode/ch4/Sophus" )

set( Sophus_LIBRARY_DIRS "/home/xxx/slamcode/ch4/Sophus" )

 

然后就知道那些变量可以用了吧