C++ &引用;目标“链接”库的使用必须是all关键字或all plain;

C++ &引用;目标“链接”库的使用必须是all关键字或all plain;,c++,cmake,clang,llvm,C++,Cmake,Clang,Llvm,我成功地构建了llvm和clang,现在我正试图根据它创建一个ClangTool。但是,当我尝试构建它时,会出现以下错误: CMake Error at tools/clang/tools/loop-convert/CMakeLists.txt:6 (target_link_libraries): The keyword signature for target_link_libraries has already been used with the target "loop-con

我成功地构建了llvm和clang,现在我正试图根据它创建一个ClangTool。但是,当我尝试构建它时,会出现以下错误:

CMake Error at tools/clang/tools/loop-convert/CMakeLists.txt:6 (target_link_libraries):
  The keyword signature for target_link_libraries has already been used with 
  the target "loop-convert".  All uses of target_link_libraries with a target
  must be either all-keyword or all-plain.

  The uses of the keyword signature are here:

    * cmake/modules/LLVM-Config.cmake:105 (target_link_libraries)
    * cmake/modules/AddLLVM.cmake:771 (target_link_libraries)
我当前的CMakeLists.txt是:

set(LLVM_LINK_COMPONENTS support)

add_clang_executable(loop-convert
  LoopConvert.cpp
)

target_link_libraries(loop-convert
  clangTooling
  clangBasic
  clangASTMatchers
)

您需要使用
目标链接库的关键字签名
;实际上,您需要在
CMakeLists.txt
中的
target\u link\u libraries
语句中添加
PRIVATE

target_link_libraries(loop-convert PRIVATE
  clangTooling
  clangBasic
  clangASTMatchers
)

这是因为
add\u llvm\u executable
使用这样的签名,您不能将它们混合在CMake中。

我仍然有点困惑。我用我的CMakeLists.txt更新了这个问题。我也很困惑。我已经更新了我的答案,试试看。我在一个自定义版本的clang上遇到了类似的问题。我在CMakeFiles.txt上为每个
target\u link\u库
添加了
PRIVATE
关键字,但出现了问题,效果良好