CMake FetchContent не удается добраться до файлов включения
Мне необходимо добавить, настроить, использовать некую библиотеку с гитхаб, я выбрал FetchContent.
Все шло не плохо, до момента линковки с библиотеками, при попытке прилинковаться, не доступны включаемые файлы .h
Пример:
cmake_minimum_required (VERSION 3.19)
project (so C)
include(FetchContent)
set (FETCHCONTENT_BASE_DIR ${CMAKE_BINARY_DIR}/vendor/)
set (FETCHCONTENT_QUIET OFF)
function (EXAUseJansson TARGET)
set (Jansson_GIT_URL
"https://github.com/akheron/jansson.git"
CACHE INTERNAL "")
set (Jansson_GIT_TAG
"v2.14"
CACHE INTERNAL "")
FetchContent_Declare (Jansson
GIT_REPOSITORY ${Jansson_GIT_URL}
GIT_TAG ${Jansson_GIT_TAG})
option (JANSSON_BUILD_DOCS OFF)
option (JANSSON_EXAMPLES OFF)
set (JANSSON_WITHOUT_TESTS ON CACHE INTERNAL "")
FetchContent_GetProperties(Jansson
POPULATED Jansson_POPULATED
SOURCE_DIR Jansson_SOURCE_DIR
BINARY_DIR Jansson_BINARY_DIR)
FetchContent_MakeAvailable (Jansson)
message (STATUS "Jansson: ${Jansson_SOURCE_DIR} ${Jansson_BINARY_DIR}")
target_link_libraries (${TARGET} PRIVATE jansson)
target_compile_definitions (${TARGET}
PRIVATE
-D EXA_USE_JANSSON)
endfunction (EXAUseJansson TARGET)
add_executable(test test.c)
EXAUseJansson (test)
#include <stdio.h>
#include <jansson.h>
int
main(int ac, char *av[]) {
(void) ac;
(void) av;
fprintf(stdout,
"Jansson library verison: %s\n",
jansson_version_str());
return 0;
}
При указании в качестве таргета библиотеки, все было бы не плохо, если бы были доступны включаемые каталоги, которые находятся по пути:
ROOT_DIR/build/vendor/LIB_NAME-src/
Тот же самый вызов FetchContent_GetProperties
, не поставляет никаких свойств. Т.е. не доступен путь к сорсам, ни к бинарникам.
Как добыть данную информацию из этого модуля правильно?
[build] C:\Users\ori\so\test.c(2,10): fatal error C1083: Не удается открыть файл включение: jansson.h: No such file or directory, [C:\Users\ori\so\build\test.vcxproj]
Источник: Stack Overflow на русском