Gui*_*not 3 c++ cmake dynamic-linking
我有一个CMake多重定义链接问题与依赖于包含静态库的共享库的可执行文件.
我创建了一个foo依赖于静态库的共享库bar.
add_library(foo SHARED foo.cpp)
target_link_libraries(foo bar)
Run Code Online (Sandbox Code Playgroud)
根据定义,内容bar在库中foo.
然后我创建一个exe依赖于的可执行文件foo.
add_executable(exe exe.cpp)
target_link_libraries(exe foo)
Run Code Online (Sandbox Code Playgroud)
在链接时,我有一个multiple definition警告/错误,告诉我库bar中的函数出现两次.在查看链接命令时,我看到它exe与链接,bar并且foo不一致.
我是否会错过依赖声明中的某些内容?我错过了一个神奇的CMake关键词吗?
像这样:
add_library(foo SHARED <foo source files>)
target_link_libraries(foo PRIVATE bar)
Run Code Online (Sandbox Code Playgroud)
如果其他库对链接foo,请确保使用CMake 的关键字PRIVATE,PUBLIC或INTERFACE
| 归档时间: |
|
| 查看次数: |
3265 次 |
| 最近记录: |