如果您想将静态库链接到共享库或可执行文件,同时保持所有符号可见(例如,您可以稍后打开它以找到它们),在 Linux/BSD 上执行此操作的一种非可移植方式是使用标志-Wl,--whole-archive. 在 macOS 上,等效标志是-Wl,-force_load,<library>; 在 Windows 上,它显然是/WHOLEARCHIVE.
在 CMake 中有一种可移植的方法来做到这一点吗?
我知道我可以添加链接器标志target_link_libraries。我可以检测到操作系统。但是,由于它的 macOS 版本在与标志相同的字符串中包含库名称(没有空格),我认为这与 CMake 对链接目标等的通常处理相混淆。我越是努力做到这一点,我就越需要向后弯腰才能让它发生。
这甚至没有涉及更不寻常的编译器,如 Intel、PGI、Cray、IBM 等。这些可能不是人们通常处理的编译器,但在某些领域,需要处理这些基本上是不可避免的。
有没有更好的选择?
小智 3
target_force_link_libraries(<target>
<PRIVATE|PUBLIC|INTERFACE> <item>...
[<PRIVATE|PUBLIC|INTERFACE> <item>...]...
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
357 次 |
| 最近记录: |