Проблемы с передачей параметров конфигурации CMake через FetchContent / ExtenalProject

Пытаюсь передать в cmake-модуль FetchContent команды конфигурации. Извращался как мог, все возможные способы передачи перепробовал. В итоге, судя по всему, передаваемые параметры ни на что не влияют. Т.е., скажем, при сборке кидаются варнинги, что для чисто-сишного компилятора используется стандарт C99, хотя я явно определил иначе. Также тесты не отключаются. Напомню, что option в CMake работает только если не определена одноимённая переменная до неё, чего почему-то не происходит. Я ковырял CMakeLists.txt-файлы во внешних проектах и доставал из option ненужные мне переменные, установленные в ON. Так что тут ошибки быть не может.

set(zipper_args
    "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}"
    "-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}"
    "-DCMAKE_C_STANDARD=11"
    "-DCMAKE_C_STANDARD_REQUIRED=ON"
    "-DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}"
    "-DBUILD_STATIC_VERSION=ON"
    "-DBUILD_SHARED_VERSION=OFF"
    "-DBUILD_TEST=OFF"
)

add_library(zipper_lib STATIC IMPORTED)

set_target_properties(
    zipper_lib PROPERTIES
    IMPORTED_LOCATION "${CMAKE_INSTALL_PREFIX}/lib/libZipper-static.a"
)

set(zipper_prefix ${CMAKE_CURRENT_BINARY_DIR}/ThirdParty/zipper)

set(BUILD_TEST OFF CACHE BOOL "" FORCE)

include(FetchContent)
FetchContent_Declare(
    zipper_repo
    GIT_REPOSITORY    https://github.com/sebastiandev/zipper.git
    GIT_TAG           f7f3f63cc38e7b5dbb1ec5243169bbf8bbf543ae
    CMAKE_ARGS        ${zipper_args}
    SOURCE_DIR        ${zipper_prefix}/src
    BINARY_DIR        ${zipper_prefix}/bld
    STAMP_DIR         ${zipper_prefix}/stamp
    TMP_DIR           ${zipper_prefix}/temp
)
FetchContent_MakeAvailable(zipper_repo)

target_include_directories(
    zipper_lib
    INTERFACE ${zipper_prefix}/src
)

add_dependencies(zipper_lib zipper_repo)

Кто работал с модулями ExternalProject и/либо FetchContent и встречался с такими проблемами, подскажите, как вы их решили. Спасибо.


Ответы (0 шт):