在 cmake 中,如何从子目录安装共享库?

In cmake how can I install shared library from subdirectory?

例如,如果我有这样一个项目:

trunk
   |_ CMakeLists.txt
   |_ src
   |   |_ CMakeLists.txt
   |   |_ componentA
   |   |_ componentB
   | 
   |_ test
       |_ unit

是否可以从 trunk/CMakeLists.txt 或 trunk/src/CMakeLists.txt 安装 libComponentA 和 libComponentB?我试过了,但它抱怨 我的目标

does not exist in this directory

经过一些谷歌搜索后,似乎 cmake install(TARGET ...) 命令只搜索当前目录,我该如何解决这个问题?

您可以给出 install 命令的完整路径。您可以使用 ${CMAKE_SOURCE_DIR}/(主干目录)和 ${CMAKE_CURRENT_SOURCE_DIR}/(当前 CMakeLists.txt 文件的位置)这样的 cmake 变量来简化您的工作。