C++ &引用;目标“链接”库的使用必须是all关键字或all plain;
我成功地构建了llvm和clang,现在我正试图根据它创建一个ClangTool。但是,当我尝试构建它时,会出现以下错误: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
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
关键字,但出现了问题,效果良好