Статическая библиотека - это не что иное, как архив объектных файлов.Как таковые они не содержат заголовочных файлов сами по себе.Вместо этого, когда вы распространяете или устанавливаете библиотеку, вам также необходимо распространять или устанавливать общедоступные заголовочные файлы.Вам не нужно перечислять файлы заголовков при создании фактической библиотеки, поэтому вам не нужно добавлять их вообще.
Кроме того, если объектные файлы созданы из перечисленных исходных файлов (myDriver.c
и myApplication.c
) - это все, что вам нужно для реальной статической библиотеки, тогда показанный файл CMakeLists.txt
- это все, что нужно для создания библиотеки.
Как уже упоминалось в комментарии, естьна самом деле пара вещей отсутствует, чтобы помочь создать объектные файлы , необходимые для библиотеки.Само создание статической библиотеки из объектных файлов в порядке.
Проблема в том, что ваши заголовочные файлы находятся в нестандартном расположении и что препроцессор компилятора не сможет их найти.не в том же каталоге, что и исходный файл.
Это означает, что вы должны указать CMake добавить флаги, указывающие компилятору, где расположены заголовочные файлы.Вы можете сделать это с помощью команды target_include_directories
.
И вам также необходимо указать полный (относительный) путь к исходному файлу.
Таким образом, CMakeLists.txt
file, вероятно, должен выглядеть примерно так:
cmake_minimum_required(VERSION 3.0.0)
project(MYAPPLICATION VERSION 0.1.0)
add_library(MYAPPLICATION STATIC DriverFolder/Src/myDriver.c ApplicationFolder/Src/myApplication.c)
# Tell CMake where the header files are located
target_include_directories(MYAPPLICATION PUBLIC DriverFolder/Inc ApplicationFolder/Inc)
Обратите внимание, что это позволяет только встроить исходные файлы в объектные файлы.Он не будет включать файлы заголовков внутри библиотеки или автоматически устанавливать их где-либо.