如何将LLVM Pass链接至外部isl库?CMake配置方法咨询
解决LLVM Pass链接isl库的CMake配置方案
针对你的需求,在lib/Transforms/MyPass目录的CMakeLists.txt中添加以下配置即可将你的Pass链接到isl库:
基础配置(isl安装在系统默认路径)
如果isl已经安装在系统标准库路径(比如/usr/lib、/usr/include),直接添加以下内容:
# 查找isl库及头文件 find_package(ISL REQUIRED) # 将isl头文件目录添加到Pass的编译包含路径 target_include_directories(MyPass PRIVATE ${ISL_INCLUDE_DIR}) # 链接isl库到你的Pass目标 target_link_libraries(MyPass PRIVATE ${ISL_LIBRARY})
自定义安装路径的isl配置
如果isl是手动安装在非系统默认路径(比如/opt/isl),先指定isl的路径再执行查找:
# 指定自定义安装的isl路径 set(ISL_INCLUDE_DIR "/opt/isl/include") set(ISL_LIBRARY "/opt/isl/lib/libisl.so") # Linux下的动态库,Windows下替换为libisl.lib # 后续配置同基础方案 target_include_directories(MyPass PRIVATE ${ISL_INCLUDE_DIR}) target_link_libraries(MyPass PRIVATE ${ISL_LIBRARY})
基于pkg-config的配置(推荐,自动处理路径)
如果系统支持pkg-config,也可以用它自动识别isl的路径:
find_package(PkgConfig REQUIRED) pkg_check_modules(ISL REQUIRED isl) target_include_directories(MyPass PRIVATE ${ISL_INCLUDE_DIRS}) target_link_libraries(MyPass PRIVATE ${ISL_LIBRARIES})
注意事项
- 上述代码中的
MyPass需替换为你在CMake中用add_llvm_library定义的Pass目标名称,比如你的配置是:
则直接使用add_llvm_library( MyPass MODULE MyPass.cpp PLUGIN_TOOL opt )MyPass作为目标名即可。 - 确保isl库的版本与你的编译环境兼容,避免链接错误。
内容的提问来源于stack exchange,提问作者Abhishek Kaushik
相关产品推荐
相关产品推荐

