如果这是重复的话,我很抱歉。我看到很多相似的帖子,但我要么“得到”它还是不完全相同的问题。 我需要构建两个共享库。它们处于相同的目录结构中,它们都可以进入bin。一个依赖于另一个。
我一直在阅读add_dependencies,但这似乎涉及cmake之外的项目构建。这些都在里面
目录结构
src
CMakeLists.txt
bin
xml
CMakeLists.txt
XML.c
utils.c
XMLSPCL.c
的src /的CMakeLists.txt
set (BIN_DIR "${CMAKE_CURRENT_SOURCE_DIR}/bin")
add_subdirectory(xml/shrxml)
xml / CMakeLists.txt(在下面的建议之后)
set(CMAKE_BUILD_TYPE Release)
project(shrxml)
add_library(shrxml SHARED XML.c utils.c)
install(TARGETS shrxml LIBRARY DESTINATION ${BIN_DIR})
project(shrxmlSPCL)
add_dependencies(shrxmlSPCL shrxml)
add_library(shrxmlSPCL SHARED XMLSPCL.c)
target_link_libraries(shrxmlSPCL LINK_PUBLIC shrxml)
install(TARGETS shrxmlSPCL LIBRARY DESTINATION ${BIN_DIR})
我可以让它发挥作用,但我知道必须有一个正确的方法来做到这一点 为了让它发挥作用,我:
comment out the xmlSPCL project
cmake ..
make shrxml
run make install so I can get shrxml.so in to the bin directory
un-comment out xmlSPCL
make (again)
make install (again)
我想要的是运行make一次,让shrxml.so进入bin目录,这样当链接shrxmlSPCL时,它会看到依赖的lib。可以通过额外的步骤完成吗?
答案 0 :(得分:1)
要制作示例项目,我必须做出3件不同的事情
1。 target_link_libraries(shrxmlSPCL LINK_PUBLIC shrxml)
- >所以 lib 和 .so 都不是前缀/后缀
2。 add_dependencies(shrxmlSPCL shrxml)
- >在具有依赖性
的 add_library()之下的某处3。 安装(TARGETS shrxmlSPCL LIBRARY DESTINATION $ {BIN_DIR}) - >将LIBRARY添加到安装命令doc
中