Я новичок в CMake и экспериментировал с ним. Вот структура папок: Структура проекта
У меня есть CMakeLists.txt
в каждой папке. Основные CMakeLists.txt:
cmake_minimum_required(VERSION 3.16.3)
cmake_policy(SET CMP0076 NEW)
project(game_of_life)
add_subdirectory(console)
add_subdirectory(game)
# add_subdirectory(sdl)
set (SRC main.c)
add_executable(${PROJECT_NAME} "")
target_sources(${PROJECT_NAME} PUBLIC ${SRC})
target_link_libraries(${PROJECT_NAME} PUBLIC console game)
install(TARGETS ${PROJECT_NAME})
И все остальные CMakeLists.txt схожи между собой:
cmake_minimum_required(VERSION 3.16.3)
cmake_policy(SET CMP0076 NEW)
project(console_ame_of_life)
SET(VALUE CACHE STRING "console_value")
add_library(${PROJECT_NAME} board_drawer.h)
target_sources(${PROJECT_NAME} PUBLIC board_drawer.c board_drawer.h)
target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_link_libraries(${PROJECT_NAME} INTERFACE m)
target_compile_definitions(${PROJECT_NAME} PUBLIC USING_LIB=$VALUE)
install(TARGETS ${PROJECT_NAME})
install(FILES game.h DESTINATION include)
Когда я запускаю команду make
в папке build
, он выдает следующие ошибки
/usr/bin/ld: cannot find -lconsole
/usr/bin/ld: cannot find -lgame
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/game_of_life.dir/build.make:84: game_of_life] Error 1
make[1]: *** [CMakeFiles/Makefile2:117: CMakeFiles/game_of_life.dir/all] Error 2
make: *** [Makefile:130: all] Error 2
Я включил их в main.c
следующим образом:
#include "game/game.h"
#include "console/board_drawer.h"
Я искал эти ошибки, но не смог найти подходящий ответ. Не могли бы вы объяснить, что означают эти ошибки и что их вызывает. Спасибо за ваше время