How can I link a static library with cmake? The library I'm trying to link is in the project directory lib/lib.a and the only source file is main.cpp. The .h file of the library lib.a is in inlcude/library.h.
Doesn't work I:
cmake_minimum_required(VERSION 3.16) project(FireUp) set(CMAKE_CXX_STANDARD 17) link_directories(lib) add_executable(FireUp main.cpp) TARGET_LINK_LIBRARIES(FireUp lib.a) Output:
-- Configuring done -- Generating done -- Build files have been written to: XXX/_projects/FireUp [ 50%] Linking CXX executable FireUp /usr/bin/ld: cannot find -l-Wl,-Bdynamic collect2: error: ld returned 1 exit status make[3]: *** [CMakeFiles/FireUp.dir/build.make:84: FireUp] Error 1 make[2]: *** [CMakeFiles/Makefile2:76: CMakeFiles/FireUp.dir/all] Error 2 make[1]: *** [CMakeFiles/Makefile2:83: CMakeFiles/FireUp.dir/rule] Error 2 make: *** [Makefile:118: FireUp] Error 2 Doesn't work II:
cmake_minimum_required(VERSION 3.16) project(FireUp) set(CMAKE_CXX_STANDARD 17) add_executable(FireUp main.cpp) TARGET_LINK_LIBRARIES(FireUp lib/lib.a) Output:
Scanning dependencies of target FireUp [ 50%] Building CXX object CMakeFiles/FireUp.dir/main.cpp.o [100%] Linking CXX executable FireUp /usr/bin/ld: cannot find -llib/lib.a collect2: error: ld returned 1 exit status make[3]: *** [CMakeFiles/FireUp.dir/build.make:103: FireUp] Error 1 make[2]: *** [CMakeFiles/Makefile2:95: CMakeFiles/FireUp.dir/all] Error 2 make[1]: *** [CMakeFiles/Makefile2:102: CMakeFiles/FireUp.dir/rule] Error 2 make: *** [Makefile:137: FireUp] Error 2 Doesn't work III:
cmake_minimum_required(VERSION 3.16) project(FireUp) set(CMAKE_CXX_STANDARD 17) add_executable(FireUp main.cpp lib/lib.a) Output:
[ 50%] Linking CXX executable FireUp /usr/bin/ld: CMakeFiles/FireUp.dir/main.cpp.o: in function `main': XXX/_projects/FireUp/main.cpp:6: undefined reference to `hello()' collect2: error: ld returned 1 exit status make[3]: *** [CMakeFiles/FireUp.dir/build.make:103: FireUp] Error 1 make[2]: *** [CMakeFiles/Makefile2:95: CMakeFiles/FireUp.dir/all] Error 2 make[1]: *** [CMakeFiles/Makefile2:102: CMakeFiles/FireUp.dir/rule] Error 2 make: *** [Makefile:137: FireUp] Error 2