如果这是重复的,我很抱歉。我看到很多类似的帖子,但我要么没有得到它,要么它不是完全相同的问题。我需要构建两个共享库。它们位于相同的目录结构中,它们都进入了bin。其中一个依赖于另一个。
我一直在阅读add_dependencies,但这似乎涉及cmake之外的项目构建。这些都在里面
目录结构
src
CMakeLists.txt
bin
xml
CMakeLists.txt
XML.c
utils.c
XMLSPCL.csrc/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 dir,这样当shrxmlSPCL被链接时,它就会看到依赖的lib。这能用额外的步骤来完成吗?
发布于 2017-04-28 20:03:49
要想运行一个示例项目,我必须做3件不同的事情
因此,->既不是lib,也不是.so前缀/后缀。
->位于具有依赖项的add_library()下面。
https://stackoverflow.com/questions/43687622
复制相似问题