#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 в свой проект, мое решение не компилируется, и я получаю вышеуказанные ошибки