Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ ModuleMaker LLVM示例程序的CMakeList_C++_Cmake_Clang_Llvm - Fatal编程技术网

C++ ModuleMaker LLVM示例程序的CMakeList

C++ ModuleMaker LLVM示例程序的CMakeList,c++,cmake,clang,llvm,C++,Cmake,Clang,Llvm,我正在尝试创建一个CMakeList,用于在Windows 10上编译ModuleMaker示例程序 一切似乎都很好,但我得到以下错误: 1> C:\Program Files (x86)\LLVM\include\llvm/IR/Metadata.h(716): note: see reference to class template instantiation 'llvm::PointerUnion<llvm::LLVMContext *,llvm::ReplaceableM

我正在尝试创建一个CMakeList,用于在Windows 10上编译ModuleMaker示例程序

一切似乎都很好,但我得到以下错误:

1>  C:\Program Files (x86)\LLVM\include\llvm/IR/Metadata.h(716): note: see reference to class template instantiation 'llvm::PointerUnion<llvm::LLVMContext *,llvm::ReplaceableMetadataImpl *>' being compiled
1>ModuleMaker.obj : error LNK2019: unresolved external symbol "void __cdecl llvm::WriteBitcodeToFile(class llvm::Module const *,class llvm::raw_ostream &,bool,class llvm::ModuleSummaryIndex const *,bool)" (?WriteBitcodeToFile@llvm@@YAXPBVModule@1@AAVraw_ostream@1@_NPBVModuleSummaryIndex@1@2@Z) referenced in function _main
1>C:\Users\nlykkei\llvm\src\examples\ModuleMaker\Debug\ModuleMaker.exe : fatal error LNK1120: 1 unresolved externals
CMakeList.txt:

cmake_minimum_required(VERSION 3.4.3)
project(ModuleMaker)

find_package(LLVM REQUIRED CONFIG)

include_directories(${LLVM_INCLUDE_DIRS})
add_definitions(${LLVM_DEFINITIONS})

message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}")
message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}")


add_executable(ModuleMaker ModuleMaker.cpp)

llvm_map_components_to_libnames(llvm_libs support core irreader)

target_link_libraries(ModuleMaker ${llvm_libs})
您需要将bitwriter添加到llvm_map_components_to_libnames,以便还与bitwriter组件链接并使用WriteBitCodeFile函数

可用LLVM组件的名称应通过LLVM_available_LIBS变量可用。有关LLVM的所有可用变量,请参阅


您可以通过执行消息${LLVM\u AVAILABLE\u LIBS}来打印LLVM\u AVAILABLE\u LIBS的内容。

您链接的LLVM版本是什么?LLVM API在不同版本之间有很大变化。3.9.1是版本,并且是给定的程序,我假设您编写的程序与LLVM 3.9.1不兼容?是的,它位于LLVM的源文件夹中。在示例目录中。我在哪里可以看到组件及其名称?@Shuzheng在阅读模块代码后,它应该通过LLVM_available_LIBS提供。还可以添加一个指向给定代码文件的链接,我在其中找到了该文件。如何查看这些变量的值?对不起,您能举个例子吗?:/“我糊涂了。”舒政补充道。
cmake_minimum_required(VERSION 3.4.3)
project(ModuleMaker)

find_package(LLVM REQUIRED CONFIG)

include_directories(${LLVM_INCLUDE_DIRS})
add_definitions(${LLVM_DEFINITIONS})

message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}")
message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}")


add_executable(ModuleMaker ModuleMaker.cpp)

llvm_map_components_to_libnames(llvm_libs support core irreader)

target_link_libraries(ModuleMaker ${llvm_libs})