如何使用Cmake Build Config运行LLVM Libclang工具,该工具不是我整个代码库上的插件
How to use cmake build config to run llvm libclang tool that is not a plugin over my whole code base?
我已经编写了一个LLVM插件,并制作了一个cmake对象库,该插件通过每个源文件运行该插件,但是我需要从整个编译中获得数据,而插件再次运行以供每个汇编单元。
我的构建环境相当复杂,我不想仅仅用于运行此工具的配置的第二个表示。
我如何使用我现有的cmakelists.txt发送#define的内容,并在一项运行中包含可以通过我的整个代码基础运行的工具的路径?
我已经考虑尝试在插件上使用Coliru的Unity构建,因为它将是一个单个汇编单元,但希望在CMake中内置某些内容(也许与一些命令行工具结合在一起),这些工具可以获取信息我需要。我也可以进行多通行的运行,在这里我建立了一堆数据文件,然后制作一个不同的工具来组合这些文件,但这也不是理想的。
谢谢。
我最终使用了cotire模块(https://github.com/sakra/cotire)并配置其Unity Build Feation(其中它将所有源捆绑到单个文件中编译)并运行。
虽然Unity Build与C 不兼容100%,因为它们破坏了文件级边界,但对我有用。
设置它有点棘手,我不确定自己做到了最好的方法,但是我所做的是将以下内容放在子目录中,然后将add_subdirectory(my_directory_name)
放在我的主要cmakelists.txt文件中:
MACRO(ADD_CXX_FLAGS)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${ARGN}")
# MESSAGE(${CMAKE_CXX_FLAGS})
ENDMACRO(ADD_CXX_FLAGS)
# target_compile_options is the "better" way to do this but it dedupes flags,
# so the multiple -Xclang flags after the first one get lost. There is a cmake bug on this but no one
# is working on it at this time
ADD_CXX_FLAGS(-Xclang)
ADD_CXX_FLAGS(-load)
ADD_CXX_FLAGS(-Xclang)
ADD_CXX_FLAGS(my_plugin.dylib) <== substitute yours here
ADD_CXX_FLAGS(-Xclang)
ADD_CXX_FLAGS(-plugin)
ADD_CXX_FLAGS(-Xclang)
ADD_CXX_FLAGS(MyPluginRegisteredName) <== substitute yours here
#
add_library(apb-js-api-template OBJECT ${APB_SOURCE_FILES})
set_target_properties(some-project-name-template PROPERTIES COTIRE_UNITY_TARGET_NAME "some-project-name")
cotire(some-project-name-template)
相关文章:
- 用于验证 Visual Studio 一致性开关对生成的代码的影响的工具
- 使用代码在 AWS 开发工具包C++控制台应用程序上设置凭证
- 安装生成工具后找不到Visual Studio代码MSVC cl.exe
- AWS 开发工具包 C++ 代码不适用于发布版本
- 有没有更好的方法可以使此代码线程安全?线程局部静态似乎是一个生硬的工具
- 为什么我们需要使用android工具链(或NDK)来编译在android应用程序上下文中运行的c/c++代码
- 如何使用Cmake Build Config运行LLVM Libclang工具,该工具不是我整个代码库上的插件
- Visual Studio TDD Project的代码覆盖工具
- 在UML工具中从StateCharts生成代码的需求
- 具有C 代码生成和DOXYGEN支持的免费UML工具
- 是否有一个工具来记录代码执行
- 引脚类似工具,用于编译时注入检测代码
- 用于在C++代码库中检索函数和方法列表的工具
- 用于在 Windows 平台上为 C/C++ 代码生成调用图的工具
- 根据设计生成C++代码的任何工具
- 代码块使用Visual C++开发人员工具运行
- 代码::块的工具链错误无效
- 将 XSD 转换为 C++ 代码的可视化工具
- 有没有工具可以只翻译代码中的注释
- 一种使C++代码划分为.h和.cpp文件对程序员透明的工具