如何使用Cmake Build Config运行LLVM Libclang工具,该工具不是我整个代码库上的插件



我已经编写了一个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)

最新更新