Mam problem, ponieważ wywala mi błąd linkera przy kompilacji programu:
libSDiZO_Project_1.a(menu.cpp.o): In function `_GLOBAL__sub_I__Z17display_main_menuv':
menu.cpp:(.text.startup+0x69): undefined reference to `dynamic_array<int>::dynamic_array(unsigned long)'
menu.cpp:(.text.startup+0x70): undefined reference to `dynamic_array<int>::~dynamic_array()'
menu.cpp:(.text.startup+0x93): undefined reference to `binary_heap<int>::binary_heap()'
menu.cpp:(.text.startup+0x9a): undefined reference to `binary_heap<int>::~binary_heap()'
menu.cpp:(.text.startup+0xbd): undefined reference to `bidirectional_list<int>::bidirectional_list()'
menu.cpp:(.text.startup+0xc4): undefined reference to `bidirectional_list<int>::~bidirectional_list()'
libSDiZO_Project_1.a(dynamic_array.cpp.o): In function `dynamic_array_tests::load_data(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
dynamic_array.cpp:(.text+0x104e): undefined reference to `dynamic_array<int>::push_back(int)'
libSDiZO_Project_1.a(dynamic_array.cpp.o): In function `dynamic_array_tests::insert(unsigned long)':
dynamic_array.cpp:(.text+0x118c): undefined reference to `dynamic_array<int>::str[abi:cxx11]()'
dynamic_array.cpp:(.text+0x132f): undefined reference to `dynamic_array<int>::insert(unsigned long, int)'
libSDiZO_Project_1.a(dynamic_array.cpp.o): In function `dynamic_array_tests::find(unsigned long)':
dynamic_array.cpp:(.text+0x1772): undefined reference to `dynamic_array<int>::find(int)'
libSDiZO_Project_1.a(dynamic_array.cpp.o): In function `dynamic_array_tests::pop_front(unsigned long)':
dynamic_array.cpp:(.text+0x1a1c): undefined reference to `dynamic_array<int>::str[abi:cxx11]()'
dynamic_array.cpp:(.text+0x1aae): undefined reference to `dynamic_array<int>::pop_front()'
libSDiZO_Project_1.a(dynamic_array.cpp.o): In function `dynamic_array_tests::pop_back(unsigned long)':
dynamic_array.cpp:(.text+0x1c4c): undefined reference to `dynamic_array<int>::str[abi:cxx11]()'
dynamic_array.cpp:(.text+0x1cde): undefined reference to `dynamic_array<int>::pop_back()'
libSDiZO_Project_1.a(dynamic_array.cpp.o): In function `dynamic_array_tests::push_front(unsigned long)':
dynamic_array.cpp:(.text+0x1e76): undefined reference to `dynamic_array<int>::str[abi:cxx11]()'
dynamic_array.cpp:(.text+0x1fa2): undefined reference to `dynamic_array<int>::push_front(int)'
libSDiZO_Project_1.a(dynamic_array.cpp.o): In function `dynamic_array_tests::push_back(unsigned long)':
dynamic_array.cpp:(.text+0x2246): undefined reference to `dynamic_array<int>::str[abi:cxx11]()'
dynamic_array.cpp:(.text+0x2372): undefined reference to `dynamic_array<int>::push_back(int)'
libSDiZO_Project_1.a(dynamic_array.cpp.o): In function `dynamic_array_tests::remove(unsigned long)':
dynamic_array.cpp:(.text+0x2619): undefined reference to `dynamic_array<int>::str[abi:cxx11]()'
dynamic_array.cpp:(.text+0x2724): undefined reference to `dynamic_array<int>::remove(unsigned long)'
libSDiZO_Project_1.a(dynamic_array.cpp.o): In function `_GLOBAL__sub_I__ZN19dynamic_array_tests9load_dataERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE':
dynamic_array.cpp:(.text.startup+0x8d): undefined reference to `dynamic_array<int>::dynamic_array(unsigned long)'
dynamic_array.cpp:(.text.startup+0x94): undefined reference to `dynamic_array<int>::~dynamic_array()'
libSDiZO_Project_1.a(bidirectional_list.cpp.o): In function `bidirectional_list_tests::load_data(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
bidirectional_list.cpp:(.text+0x104e): undefined reference to `bidirectional_list<int>::push_back(int)'
libSDiZO_Project_1.a(bidirectional_list.cpp.o): In function `bidirectional_list_tests::insert(unsigned long)':
bidirectional_list.cpp:(.text+0x118c): undefined reference to `bidirectional_list<int>::str[abi:cxx11]()'
bidirectional_list.cpp:(.text+0x12a9): undefined reference to `bidirectional_list<int>::size()'
bidirectional_list.cpp:(.text+0x133e): undefined reference to `bidirectional_list<int>::insert(unsigned long, int)'
libSDiZO_Project_1.a(bidirectional_list.cpp.o): In function `bidirectional_list_tests::find(unsigned long)':
bidirectional_list.cpp:(.text+0x1782): undefined reference to `bidirectional_list<int>::find(int)'
libSDiZO_Project_1.a(bidirectional_list.cpp.o): In function `bidirectional_list_tests::pop_front(unsigned long)':
bidirectional_list.cpp:(.text+0x1a2c): undefined reference to `bidirectional_list<int>::str[abi:cxx11]()'
bidirectional_list.cpp:(.text+0x1abe): undefined reference to `bidirectional_list<int>::pop_front()'
libSDiZO_Project_1.a(bidirectional_list.cpp.o): In function `bidirectional_list_tests::pop_back(unsigned long)':
bidirectional_list.cpp:(.text+0x1c5c): undefined reference to `bidirectional_list<int>::str[abi:cxx11]()'
bidirectional_list.cpp:(.text+0x1cee): undefined reference to `bidirectional_list<int>::pop_back()'
libSDiZO_Project_1.a(bidirectional_list.cpp.o): In function `bidirectional_list_tests::push_back(unsigned long)':
bidirectional_list.cpp:(.text+0x1e86): undefined reference to `bidirectional_list<int>::str[abi:cxx11]()'
bidirectional_list.cpp:(.text+0x1fb2): undefined reference to `bidirectional_list<int>::push_back(int)'
libSDiZO_Project_1.a(bidirectional_list.cpp.o): In function `bidirectional_list_tests::push_front(unsigned long)':
bidirectional_list.cpp:(.text+0x2256): undefined reference to `bidirectional_list<int>::str[abi:cxx11]()'
bidirectional_list.cpp:(.text+0x2382): undefined reference to `bidirectional_list<int>::push_front(int)'
libSDiZO_Project_1.a(bidirectional_list.cpp.o): In function `bidirectional_list_tests::remove(unsigned long)':
bidirectional_list.cpp:(.text+0x2629): undefined reference to `bidirectional_list<int>::str[abi:cxx11]()'
bidirectional_list.cpp:(.text+0x26b4): undefined reference to `bidirectional_list<int>::size()'
bidirectional_list.cpp:(.text+0x273c): undefined reference to `bidirectional_list<int>::remove(unsigned long)'
libSDiZO_Project_1.a(bidirectional_list.cpp.o): In function `_GLOBAL__sub_I__ZN24bidirectional_list_tests9load_dataERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE':
bidirectional_list.cpp:(.text.startup+0x8b): undefined reference to `bidirectional_list<int>::bidirectional_list()'
bidirectional_list.cpp:(.text.startup+0x92): undefined reference to `bidirectional_list<int>::~bidirectional_list()'
CMakeFiles/project.dir/src/main.cpp.o: In function `_GLOBAL__sub_I_main':
main.cpp:(.text.startup+0x42): undefined reference to `dynamic_array<int>::dynamic_array(unsigned long)'
main.cpp:(.text.startup+0x49): undefined reference to `dynamic_array<int>::~dynamic_array()'
main.cpp:(.text.startup+0x70): undefined reference to `binary_heap<int>::binary_heap()'
main.cpp:(.text.startup+0x77): undefined reference to `binary_heap<int>::~binary_heap()'
main.cpp:(.text.startup+0x9d): undefined reference to `bidirectional_list<int>::bidirectional_list()'
main.cpp:(.text.startup+0xa4): undefined reference to `bidirectional_list<int>::~bidirectional_list()'
collect2: error: ld returned 1 exit status
CMakeFiles/project.dir/build.make:95: recipe for target 'project' failed
make[2]: *** [project] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/project.dir/all' failed
make[1]: *** [CMakeFiles/project.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2
Mój CMakeList.txt:
cmake_minimum_required(VERSION 3.10)
project(SDiZO_Project_1)
set(CMAKE_CXX_FLAGS "--std=c++20 -Wall -O3")
include_directories(
include
)
add_library(${PROJECT_NAME}
src/lib/memory.cpp
src/lib/dynamic_array.cpp
src/lib/bidirectional_list.cpp
src/lib/binary_heap.cpp
src/lib/bst.cpp
src/menu.cpp
src/tests/dynamic_array.cpp
src/tests/bidirectional_list.cpp
src/tests/binary_heap.cpp
)
add_executable(project src/main.cpp)
target_link_libraries(project ${PROJECT_NAME})
Struktura projektu:
..
├── CMakeLists.txt
├── build
│ ├── CMakeCache.txt
│ ├── CMakeFiles
│ │ ├── 3.10.2
│ │ │ ├── CMakeCCompiler.cmake
│ │ │ ├── CMakeCXXCompiler.cmake
│ │ │ ├── CMakeDetermineCompilerABI_C.bin
│ │ │ ├── CMakeDetermineCompilerABI_CXX.bin
│ │ │ ├── CMakeSystem.cmake
│ │ │ ├── CompilerIdC
│ │ │ │ ├── CMakeCCompilerId.c
│ │ │ │ ├── a.out
│ │ │ │ └── tmp
│ │ │ └── CompilerIdCXX
│ │ │ ├── CMakeCXXCompilerId.cpp
│ │ │ ├── a.out
│ │ │ └── tmp
│ │ ├── CMakeDirectoryInformation.cmake
│ │ ├── CMakeOutput.log
│ │ ├── CMakeTmp
│ │ ├── Makefile.cmake
│ │ ├── Makefile2
│ │ ├── Progress
│ │ │ ├── 1
│ │ │ ├── 10
│ │ │ ├── 12
│ │ │ ├── 2
│ │ │ ├── 3
│ │ │ ├── 4
│ │ │ ├── 5
│ │ │ ├── 6
│ │ │ ├── 7
│ │ │ ├── 8
│ │ │ ├── 9
│ │ │ └── count.txt
│ │ ├── SDiZO_Project_1.dir
│ │ │ ├── CXX.includecache
│ │ │ ├── DependInfo.cmake
│ │ │ ├── build.make
│ │ │ ├── cmake_clean.cmake
│ │ │ ├── cmake_clean_target.cmake
│ │ │ ├── depend.internal
│ │ │ ├── depend.make
│ │ │ ├── flags.make
│ │ │ ├── link.txt
│ │ │ ├── progress.make
│ │ │ └── src
│ │ │ ├── lib
│ │ │ │ ├── bidirectional_list.cpp.o
│ │ │ │ ├── binary_heap.cpp.o
│ │ │ │ ├── bst.cpp.o
│ │ │ │ ├── dynamic_array.cpp.o
│ │ │ │ └── memory.cpp.o
│ │ │ ├── main.cpp.o
│ │ │ ├── menu.cpp.o
│ │ │ └── tests
│ │ │ ├── bidirectional_list.cpp.o
│ │ │ ├── binary_heap.cpp.o
│ │ │ └── dynamic_array.cpp.o
│ │ ├── TargetDirectories.txt
│ │ ├── cmake.check_cache
│ │ ├── feature_tests.bin
│ │ ├── feature_tests.c
│ │ ├── feature_tests.cxx
│ │ ├── progress.marks
│ │ └── project.dir
│ │ ├── CXX.includecache
│ │ ├── DependInfo.cmake
│ │ ├── build.make
│ │ ├── cmake_clean.cmake
│ │ ├── depend.internal
│ │ ├── depend.make
│ │ ├── flags.make
│ │ ├── link.txt
│ │ ├── progress.make
│ │ └── src
│ │ ├── lib
│ │ │ ├── bidirectional_list.cpp.o
│ │ │ ├── binary_heap.cpp.o
│ │ │ ├── bst.cpp.o
│ │ │ ├── dynamic_array.cpp.o
│ │ │ └── memory.cpp.o
│ │ ├── main.cpp.o
│ │ ├── menu.cpp.o
│ │ └── tests
│ │ ├── bidirectional_list.cpp.o
│ │ ├── binary_heap.cpp.o
│ │ └── dynamic_array.cpp.o
│ ├── Makefile
│ ├── cmake_install.cmake
│ └── libSDiZO_Project_1.a
├── include
│ ├── lib
│ │ ├── bidirectional_list.h
│ │ ├── binary_heap.h
│ │ ├── bst.h
│ │ ├── dynamic_array.h
│ │ ├── memory.h
│ │ └── utils.h
│ ├── menu.h
│ └── tests
│ ├── bidirectional_list.h
│ ├── binary_heap.h
│ └── dynamic_array.h
└── src
├── lib
│ ├── bidirectional_list.cpp
│ ├── binary_heap.cpp
│ ├── bst.cpp
│ ├── dynamic_array.cpp
│ └── memory.cpp
├── main.cpp
├── menu.cpp
└── tests
├── bidirectional_list.cpp
├── binary_heap.cpp
└── dynamic_array.cpp