Я пытался скомпилировать разделяемую библиотеку и исполняемый файл как со статически связанными libstdc ++, так и с libgcc, однако я получаю вышеуказанную ошибку компоновщика. Я видел, как люди предлагают использовать --allow-множественное определение, однако я хочу знать правильный способ решения этой проблемы. Я использую MinGW-w64 8.1.0
Я пытался использовать флаг компоновщика hacky --allow-множественное определение, однако я хочу отойти от этого и найти правильное решение.
CMakeLists.txt для библиотеки
add_library(
engine
SHARED
${vixen_HEADERS}
${vixen_SOURCES}
)
set_target_properties(
engine PROPERTIES
PREFIX ""
OUTPUT_NAME "VixenEngine"
)
find_package(PNG REQUIRED)
find_package(GLFW REQUIRED)
find_package(Vulkan REQUIRED)
target_include_directories(
engine PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/include
${Vulkan_INCLUDE_DIR}
${GLFW_INCLUDE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/contrib/glm/
${PNG_INCLUDE_DIR}
)
target_link_libraries(
engine
Vulkan::Vulkan
${GLFW_LIBRARIES}
PNG::PNG
-static-libstdc++
-static-libgcc
)
CMakeLists.txt для исполняемого файла
add_executable(test main.cpp properties.rc)
target_include_directories(test PUBLIC ${CMAKE_SOURCE_DIR}/engine/include/)
target_link_libraries(test engine -static-libstdc++ -static-libgcc)