cmake - 创建实现多个 LLVM 传递的动态库
问题描述
我有一个静态库,它由几个通道组成,是opt
. 我想让它动态并创建一个 dylib 文件,所以我可以调用opt
、加载创建.dylib
并传递所需的 LLVM 通行证。我正在使用 LLVM 7.0。
我在 Xcode 的帮助下创建了这样的 dylib 文件(通过添加到已经存在的动态库目标附加通道),但我找不到任何信息,如何在 CMake 的帮助下制作它。
目前,该库的 CMake 文件如下所示:
add_llvm_library(MyLibrary
Pass1.cpp
Pass2.cpp
Pass3.cpp
...
PassN.cpp
DEPENDS
intrinsics_gen
)
预期的是执行这样的命令:
path/to/opt -load /path/to/MyLibrary.dylib -Pass3 ...
我不清楚,是否可以保留库的结构,或者我是否必须修改它,通过给每个传递一个CMakeLists.txt
文件。
解决方案
试过这个,遇到了多个依赖的问题,需要包含几个库。需要链接的库需要链接另一个库。过了一会儿,CMakeLists.txt
以 LLVM 中提供的 Hello 为例。而不是add_llvm_library
,写add_llvm_loadablemodule
,做出这样的CMakeLists.txt
if (WIN32 OR CYGWIN)
set(LLVM_LINK_COMPONENTS ...)
endif()
add_llvm_loadable_module(Mylib_Dylib
Pass1.cpp
Pass2.cpp
...
PassN.cpp
PLUGIN_TOOL
opt
)
它构建 Mylib.dylib,并且可以从中调用 pass。
推荐阅读
- sql - Power Query 中的索引匹配或 Vlookup
- javascript - (未捕获的 SyntaxError:输入意外结束)
- c# - 尝试将请求发送到另一个站点时,Blazor 应用程序崩溃
- mysql - SQL 按一对多字段的特定值排序
- c# - 从 webforms 调用 WebApi 会丢失身份验证
- java - 将 Spring Security 添加到项目后未找到 Swagger UI
- dart - 如何从助记词生成以太坊的私钥?
- wpf - dotnet build 不适用于 1 WPF 项目,但所有其他项目都可以
- uml - 我可以为多对多关系留下一个关联类吗?
- javascript - 当 html5 视频元素不在屏幕上时,ReactJS 相机流不播放