Опитвам се да настроя проект, при който заглавните файлове могат да бъдат намерени от src кода на библиотеките на подпапките, както и src кода в най-високото ниво с помощта на Cmake. В момента получавам грешка, че заглавният файл не може да бъде намерен. Структурата на моя проект изглежда така:
root/
src/
CMakeLists.txt #(top level)
main.c
lib/
lib1.c
CMakeLists.txt #(lower level)
headers/
lib1.h
build/
Моят CMakeLists.txt от най-високо ниво изглежда така:
cmake_minimum_required(VERSION 3.13.4)
project(CmakeTUT_Proj)
add_executable(${PROJECT_NAME} main.c)
target_include_directories(${PROJECT_NAME} PUBLIC Lib/headers/)
add_subdirectory(Lib/)
target_link_directories(${PROJECT_NAME} PRIVATE Lib/headers/)
target_link_libraries(${PROJECT_NAME} name_of_lib)
Моят CMakeLists.txt от по-ниско ниво изглежда така:
add_library(name_of_lib adder.c)
Моите програми main.c и lib1.c включват библиотеката като #include "lib1.h"
, cmake работи добре без никакви грешки, но когато изграждам проекта с make
, получавам грешка като:
root/src/Lib/lib1.c:2:10: fatal error: lib1.h: No such file or directory
#include "lib1.h"
Искам да структурирам проекта си така, че main.c и lib1.c да имат достъп до lib1.h. Някакви идеи? Благодаря ти.
target_include_directories(${PROJECT_NAME} PUBLIC Lib/)
... Заглавният файл наистина ли е вLib
? - person Some programmer dude   schedule 04.01.2021add_library(name_of_lib
- нямаname_of_lib
библиотека.target_link_directories
липсва)
. Добавихте ли директориятаheaders
в пътеките за търсене при компилирането наlib1.c
? - person KamilCuk   schedule 04.01.2021