【发布时间】:2020-12-17 21:50:11
【问题描述】:
我正在使用 CMake 构建我的 C++ 项目。我的项目需要将main.cpp 与共享库和静态库链接。例如,
静态库:libstatic1 和 libstatic2。
共享库:libshared1 和 libshared2。
g++ 命令的解决方法是:
g++ -O0 -g main.o -Wl,-Bdynamic libshared1 libshared2 -Wl,-Bstatic libstatic1 libstatic2
通过分别为共享库和静态库设置链接器选项-Bdynamic 和-Bstatic,main.p 将能够正确链接这些库。
我不知道如何使用 CMake。
我将target_link_options(proj PUBLIC "LINKER:-Bstatic")和target_link_options(proj PUBLIC "LINKER:-Bshared")设置如下:
//CMakeLists.txt
project(proj)
#settings
...
...
add_executable(proj main.cpp)
target_link_libraries(proj libshared1 libshared2)
target_link_options(proj PUBLIC "LINKER:-Bdynamic")
target_link_libraries(proj libstatic1 libstatic2)
target_link_options(proj PUBLIC "LINKER:-Bstatic")
我使用 make VERBOSE=1 检查了 g++ 命令,它的行为与我预期的不一样。
所以问题是: 如何使用 CMake 设置这样的 g++ 标志?
【问题讨论】: