cmake教程(七) INSTALL

常用的INSTALL配置

1
2
3
install(TARGETS node
RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)

最终的可执行文件的路径在install/lib/node

另一种情况,test_node是可执行文件,test是动态库,target_link_libraries只是保证了devel/lib/test_node中的可执行文件链接了test,但不保证install/lib/test_node中链接了test,需要如下配置

1
2
3
4
5
6
install(
TARGETS test test_node
ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)

注意,如果修改了test对应的源文件, 需要把编译后的libtest.so也更新到远程机,否则test_node没有变化

CMAKE_INSTALL_PREFIX

CMAKE_INSTALL_PREFIX变量类似于configure脚本的–prefix,常见的使用方法是在build文件夹里执行cmake -DCMAKE_INSTALL_PREFIX=/usr ..

INSTALL指令用于定义安装规则,安装的内容可以包括目标二进制、动态库、静态库以及
文件、目录、脚本等。

检查CMakelist文件发现路径是include_directories("/usr/include/eigen3")

检查eigen3的路径,发现我的是/usr/local/include/eigen3/Eigen,可以链接对应的文件,即进行以下命令:

1
sudo ln -s /usr/local/include/eigen3/Eigen /usr/include/Eigen

sudo ln -s 源文件 目标文件是一个常用的linux命令,功能是为源文件在目标文件的位置建立一个同步的链接,当二者建立联系后即可在源文件中访问目标文件。

链接有两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link). 建立硬链接时,链接文件和被链接文件必须位于同一个文件系统中,并且不能建立指向目录的硬链接。默认情况下,ln产生硬链接。如果给ln命令加上- s选项,则建立符号链接。