CMake, когда fetchContent rabbitmq

#c #visual-studio #cmake #rabbitmq

Вопрос:

Я пытаюсь интегрировать rabbitmq в один из модулей моего решения, чтобы переключиться с почтовых ящиков на rabbitmq. Проблема в том, что во время fectcontent модуль «разрывает» ссылки других модулей. Генерируемые ошибки являются «неразрешенными внешними символами».

 ##########################
# CODE CMAKELISTS
##########################
file(GLOB sources "src/*.cpp" "src/*.c")
file(GLOB headers "inc/*.hpp" "inc/*.h")

project("${MODULE_NAME}${MODULE_TYPE}")

set(OUTPUT_FILE "${MODULE_NAME}${MODULE_TYPE}")
OPTION(BUILD_TESTS "Build the tests" OFF)

MESSAGE(STATUS "Building : ${PROJECT_NAME}...")
if(BUILD_TESTS)
    enable_testing()
    ADD_SUBDIRECTORY(test)
    MESSAGE(STATUS "Building : ${PROJECT_NAME} test...")
endif()

################################
# RabbitMQ
################################
SET(ENABLE_SSL_SUPPORT OFF CACHE PATH "Shall RabbitMQ be built with ssl support" FORCE)
include(FetchContent)

FetchContent_Declare(
    rabbitmq
    GIT_REPOSITORY https://github.com/alanxz/rabbitmq-c.git
    GIT_TAG        v0.10.0
)

FetchContent_GetProperties(rabbitmq)
if(NOT rabbitmq_POPULATED)
    FetchContent_Populate(rabbitmq)
    add_subdirectory(${rabbitmq_SOURCE_DIR} ${rabbitmq_BINARY_DIR})
endif()

SET_SOURCE_FILES_PROPERTIES( ${sources} PROPERTIES LANGUAGE CXX )
SET_SOURCE_FILES_PROPERTIES( ${headers} PROPERTIES LANGUAGE CXX )
 

Тип ошибки:

LNK2001 внешний символ не разрешен «структура fsTUN_GlobalSection_t tun» (?tun@@3UfsTUN_GlobalSection_t@@A) МОД.LIB fsMOD_maxSpeed.obj 1

LNK2019 внешний символ не разрешен «длинный __cdecl fsRTS_MaxSpeed(длинный,структура _iobuf *,длинный,длинный,длинный,длинный, структура fs_продукты *,структура fsseq_адаптация *,двойной,двойной,двойной,двойной, двойной *,двойной *,структура rts_mod *)» (?fsRTS_MaxSpeed@@YAJJPEAU_iobuf@@JJJJPEAUfs_products@@PEAUfsSEQ_Adaptation@@NNNNPEAN3PEAUrts_mod@@@Z), на которую ссылается функция «long __cdecl fsMOD_maxSpeed(структура fs_продуктов *,структура fsseq_адаптации *)» (?fsMOD_maxSpeed@@YAJPEAUfs_продукты@@peaufsseq_адаптация@@@Z) MOD.LIB ..fsMOD_maxSpeed.obj 1

Комментарии:

1. Пожалуйста, отредактируйте свой пост, чтобы показать фактический вывод ошибок из CMake и/или процесс компиляции.

2. Обертывание переменных CMAKE в строки обычно является хорошей идеей

3. В выводе компоновщика есть два языка (похоже, французский и английский). Вы компилируете с помощью разных цепочек инструментов? Ошибка, указывающая, что функции fsTUN_GlobalSection_t и fsMOD_maxSpeed отсутствуют. Я не думаю, что это функции rabbitmq.

4. у меня нет ошибки с функцией rabbitmq, моя проблема в том, что когда я добавляю rabbitmq в свой проект, мое решение не компилируется, и я получаю вышеуказанные ошибки