Im very unexperienced with CMAKE. Me and my friend wanted to make a programming language. The basic Lexer and Parser works fine. Now we wanted to include LLVM in the project to compile the language. But im get so much errors and i don't really now what and how to include LLVM.
That's my CMAKE file:
cmake_minimum_required(VERSION 3.22)
project(absturz)
set(CMAKE_CXX_STANDARD 14)
set(LLVM_PATH /usr/local/Cellar/llvm@13/13.0.1)
link_directories(${LLVM_PATH}/bin)
include_directories(${LLVM_PATH}/include)
add_definitions(
-D__STDC_LIMIT_MACROS
-D__STDC_CONSTANT_MACROS
)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti -std=c++11")
add_executable(absturz main.cpp lang/Lexer.h lang/Token.h lang/src/Token.cpp lang/src/Lexer.cpp lang/Compiler.h lang/src/Compiler.cpp)
target_link_libraries(absturz
/usr/local/Cellar/llvm@13/13.0.1/lib/libLLVMCore.a
/usr/local/Cellar/llvm@13/13.0.1/lib/libLLVMSupport.a
)
when I compile the project I get:
[1/1] Linking CXX executable absturz
FAILED: absturz
: && /Library/Developer/CommandLineTools/usr/bin/c++ -fno-rtti -std=c++11 -g -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX12.3.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/absturz.dir/main.cpp.o CMakeFiles/absturz.dir/lang/src/Token.cpp.o CMakeFiles/absturz.dir/lang/src/Lexer.cpp.o CMakeFiles/absturz.dir/lang/src/Compiler.cpp.o -o absturz -L/usr/local/Cellar/llvm@13/13.0.1/bin -Wl,-rpath,/usr/local/Cellar/llvm@13/13.0.1/bin /usr/local/Cellar/llvm@13/13.0.1/lib/libLLVMCore.a /usr/local/Cellar/llvm@13/13.0.1/lib/libLLVMSupport.a /usr/local/Cellar/llvm@13/13.0.1/lib/libLLVMDemangle.a && :
Undefined symbols for architecture x86_64:
"llvm::EngineBuilder::selectTarget()", referenced from:
llvm::EngineBuilder::create() in Compiler.cpp.o
"llvm::EngineBuilder::create(llvm::TargetMachine*)", referenced from:
llvm::EngineBuilder::create() in Compiler.cpp.o
"llvm::EngineBuilder::EngineBuilder(std::__1::unique_ptr<llvm::Module, std::__1::default_delete<llvm::Module> >)", referenced from:
Compiler::compile() in Compiler.cpp.o
"llvm::EngineBuilder::~EngineBuilder()", referenced from:
Compiler::compile() in Compiler.cpp.o
"llvm::dwarf::MacinfoString(unsigned int)", referenced from:
WriteMDNodeBodyInternal(llvm::raw_ostream&, llvm::MDNode const*, (anonymous namespace)::TypePrinting*, llvm::SlotTracker*, llvm::Module const*) in libLLVMCore.a(AsmWriter.cpp.o)
"llvm::dwarf::LanguageString(unsigned int)", referenced from:
WriteMDNodeBodyInternal(llvm::raw_ostream&, llvm::MDNode const*, (anonymous namespace)::TypePrinting*, llvm::SlotTracker*, llvm::Module const*) in libLLVMCore.a(AsmWriter.cpp.o)
"llvm::dwarf::ConventionString(unsigned int)", referenced from:
WriteMDNodeBodyInternal(llvm::raw_ostream&, llvm::MDNode const*, (anonymous namespace)::TypePrinting*, llvm::SlotTracker*, llvm::Module const*) in libLLVMCore.a(AsmWriter.cpp.o)
"llvm::dwarf::AttributeEncodingString(unsigned int)", referenced from:
writeDIExpression(llvm::raw_ostream&, llvm::DIExpression const*, (anonymous namespace)::TypePrinting*, llvm::SlotTracker*, llvm::Module const*) in libLLVMCore.a(AsmWriter.cpp.o)
WriteMDNodeBodyInternal(llvm::raw_ostream&, llvm::MDNode const*, (anonymous namespace)::TypePrinting*, llvm::SlotTracker*, llvm::Module const*) in libLLVMCore.a(AsmWriter.cpp.o)
"llvm::dwarf::OperationEncodingString(unsigned int)", referenced from:
writeDIExpression(llvm::raw_ostream&, llvm::DIExpression const*, (anonymous namespace)::TypePrinting*, llvm::SlotTracker*, llvm::Module const*) in libLLVMCore.a(AsmWriter.cpp.o)
"llvm::dwarf::TagString(unsigned int)", referenced from:
(anonymous namespace)::MDFieldPrinter::printTag(llvm::DINode const*) in libLLVMCore.a(AsmWriter.cpp.o)
"llvm::remarks::parseFormat(llvm::StringRef)", referenced from:
llvm::setupLLVMOptimizationRemarks(llvm::LLVMContext&, llvm::StringRef, llvm::StringRef, llvm::StringRef, bool, llvm::Optional<unsigned long long>) in libLLVMCore.a(LLVMRemarkStreamer.cpp.o)
llvm::setupLLVMOptimizationRemarks(llvm::LLVMContext&, llvm::raw_ostream&, llvm::StringRef, llvm::StringRef, bool, llvm::Optional<unsigned long long>) in libLLVMCore.a(LLVMRemarkStreamer.cpp.o)
"llvm::remarks::RemarkStreamer::matchesFilter(llvm::StringRef)", referenced from:
llvm::LLVMRemarkStreamer::emit(llvm::DiagnosticInfoOptimizationBase const&) in libLLVMCore.a(LLVMRemarkStreamer.cpp.o)
"llvm::remarks::RemarkStreamer::setFilter(llvm::StringRef)", referenced from:
llvm::setupLLVMOptimizationRemarks(llvm::LLVMContext&, llvm::StringRef, llvm::StringRef, llvm::StringRef, bool, llvm::Optional<unsigned long long>) in libLLVMCore.a(LLVMRemarkStreamer.cpp.o)
llvm::setupLLVMOptimizationRemarks(llvm::LLVMContext&, llvm::raw_ostream&, llvm::StringRef, llvm::StringRef, bool, llvm::Optional<unsigned long long>) in libLLVMCore.a(LLVMRemarkStreamer.cpp.o)
"llvm::remarks::RemarkStreamer::RemarkStreamer(std::__1::unique_ptr<llvm::remarks::RemarkSerializer, std::__1::default_delete<llvm::remarks::RemarkSerializer> >, llvm::Optional<llvm::StringRef>)", referenced from:
llvm::setupLLVMOptimizationRemarks(llvm::LLVMContext&, llvm::StringRef, llvm::StringRef, llvm::StringRef, bool, llvm::Optional<unsigned long long>) in libLLVMCore.a(LLVMRemarkStreamer.cpp.o)
llvm::setupLLVMOptimizationRemarks(llvm::LLVMContext&, llvm::raw_ostream&, llvm::StringRef, llvm::StringRef, bool, llvm::Optional<unsigned long long>) in libLLVMCore.a(LLVMRemarkStreamer.cpp.o)
"llvm::remarks::createRemarkSerializer(llvm::remarks::Format, llvm::remarks::SerializerMode, llvm::raw_ostream&)", referenced from:
llvm::setupLLVMOptimizationRemarks(llvm::LLVMContext&, llvm::StringRef, llvm::StringRef, llvm::StringRef, bool, llvm::Optional<unsigned long long>) in libLLVMCore.a(LLVMRemarkStreamer.cpp.o)
llvm::setupLLVMOptimizationRemarks(llvm::LLVMContext&, llvm::raw_ostream&, llvm::StringRef, llvm::StringRef, bool, llvm::Optional<unsigned long long>) in libLLVMCore.a(LLVMRemarkStreamer.cpp.o)
"_del_curterm", referenced from:
llvm::sys::Process::FileDescriptorHasColors(int) in libLLVMSupport.a(Process.cpp.o)
"_set_curterm", referenced from:
llvm::sys::Process::FileDescriptorHasColors(int) in libLLVMSupport.a(Process.cpp.o)
"_setupterm", referenced from:
llvm::sys::Process::FileDescriptorHasColors(int) in libLLVMSupport.a(Process.cpp.o)
"_tigetnum", referenced from:
llvm::sys::Process::FileDescriptorHasColors(int) in libLLVMSupport.a(Process.cpp.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.
OS: MacOS (Intel chip)
IDE: CLion