我有一个既有目标共享库又有目标可执行文件的项目。使用一个最小的示例进行说明,其布局如下:
project
bin
lib
build
CMakeList.txt
foo
CMakeList.txt
foo.hpp
foo.cpp
test_foo
CMakeList.txt
test_foo.cpp
子目录foo
创建一个共享库foo.so
。子目录test_foo
创建一个可执行文件test_foo
,该可执行文件在构建树中与foo
链接。构建成功。但是,在安装过程中,我无法弄清楚如何将foo.so
与lib
链接的同时将test_foo
安装到bin
,将bin/test_foo
安装到lib/foo.so
。我使用了安装命令:
install(TARGETS foo LIBRARY DESTINATION lib)
install(TARGETS foo_test RUNTIME DESTINATION bin)
在CMakeList.txt
和foo
的相应子目录test_foo
中。 foo.so
出现在lib
中,而test_foo
出现在bin
中。但是,bin/test_foo
未链接到lib/foo.so
。正确的方法是什么?