Я пытаюсь собрать / запустить простую тестовую программу с использованием LLVM / Clang, Visual Studio и CMake, но каждый раз, когда я пытаюсь построить проект, я получаю тысячи ошибок, говорящих: undefined reference ...
или ... is ambiguous
.
Если я собираю библиотеку, которая содержит все LLVM
и Clang
, ошибок нет, но когда я строю программу, которая включает в себя мою библиотеку, я получаю тысячи ошибок в LLVM
заголовках,Это заставляет меня поверить, что я пропускаю шаг с LLVM
в моем исполняемом файле.Возможно, я должен был связывать библиотеки llvm / clang при сборке моего исполняемого файла.
В моей библиотеке у меня просто есть набор включений llvm / clang (без другого кода), а в исполняемом файле у меня пустая основнаяс одним включением в мою библиотеку.
Командная строка программы
[1/1] cmd.exe /C "cd . && C:\msys64\mingw64\bin\clang++.exe -g rustynail/apps/introspection/CMakeFiles/RN_Introspection.dir/main.cpp.obj -o D:\GameDevelopment\Projects\RustyNail_CMake\dev\rno\bin\RN_Introspection.exe -Wl,--out-implib,D:\GameDevelopment\Projects\RustyNail_CMake\dev\rno\lib\libRN_Introspection.dll.a -Wl,--major-image-version,0,--minor-image-version,0 -LD:/GameDevelopment/Projects/RustyNail_CMake/dev/rno/custom/shared D:/GameDevelopment/Projects/RustyNail_CMake/dev/rno/lib/UT.lib D:/GameDevelopment/Projects/RustyNail_CMake/dev/rno/lib/RTTI.lib -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 && cd ."
FAILED: D:/GameDevelopment/Projects/RustyNail_CMake/dev/rno/bin/RN_Introspection.exe
cmd.exe /C "cd . && C:\msys64\mingw64\bin\clang++.exe -g
rustynail/apps/introspection/CMakeFiles/RN_Introspection.dir/main.cpp.obj -o D:\GameDevelopment\Projects\RustyNail_CMake\dev\rno\bin\RN_Introspection.exe -Wl,--out-implib,D:\GameDevelopment\Projects\RustyNail_CMake\dev\rno\lib\libRN_Introspection.dll.a -Wl,--major-image-version,0,--minor-image-version,0 -LD:/GameDevelopment/Projects/RustyNail_CMake/dev/rno/custom/shared D:/GameDevelopment/Projects/RustyNail_CMake/dev/rno/lib/UT.lib D:/GameDevelopment/Projects/RustyNail_CMake/dev/rno/lib/RTTI.lib -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 && cd ."
rustynail/apps/introspection/CMakeFiles/RN_Introspection.dir/main.cpp.obj: In function `clang::Decl::getAccess() const':
C:\msys64\mingw64\include\clang/AST/DeclBase.h:452: undefined reference to `clang::Decl::AccessDeclContextSanity() const'
<More similar errors but omitted for brevity>
Программа CMakeLists.txt
project(RN_Introspection)
set(sources
main.cpp
)
rn_exec(SRCS ${sources})
find_package(RTTI REQUIRED)
target_link_libraries(${PROJECT_NAME}
PUBLIC
RustyNail::RTTI
)
target_include_directories(${PROJECT_NAME}
PUBLIC
${RTTI_INCLUDE_DIRS}
)
CMakeSettings.json
{
"configurations": [
{
"environments": [
{
"MINGW64_ROOT": "C:\\msys64\\mingw64",
"BIN_ROOT": "${env.MINGW64_ROOT}\\bin",
"FLAVOR": "x86_64-w64-mingw32",
"TOOLSET_VERSION": "7.3.0",
"PATH": "${env.MINGW64_ROOT}\\bin;${env.MINGW64_ROOT}\\..\\usr\\local\\bin;${env.MINGW64_ROOT}\\..\\usr\\bin;${env.MINGW64_ROOT}\\..\\bin;${env.PATH}",
"INCLUDE": "${env.MINGW64_ROOT}\\include\\c++\\${env.TOOLSET_VERSION};${env.MINGW64_ROOT}\\include\\c++\\${env.TOOLSET_VERSION}\\tr1;${env.MINGW64_ROOT}\\include\\c++\\${env.TOOLSET_VERSION}\\${env.FLAVOR};${env.MINGW64_ROOT}\\include",
"environment": "mingw_64"
}
],
"name": "Mingw64-Debug",
"generator": "Ninja",
"configurationType": "Debug",
"inheritEnvironments": [
"mingw_64"
],
"buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
"installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
"cmakeCommandArgs": "",
"buildCommandArgs": "-v",
"ctestCommandArgs": "",
"intelliSenseMode": "linux-gcc-x64",
"variables": [
{
"name": "CMAKE_C_COMPILER",
"value": "${env.BIN_ROOT}\\clang.exe"
},
{
"name": "CMAKE_CXX_COMPILER",
"value": "${env.BIN_ROOT}\\clang++.exe"
}
]
}
]
}