Создание файлов DEF и .A с помощью GCC / cmake - PullRequest
0 голосов
/ 20 июня 2019

Я пытаюсь собрать Alexa SDK здесь: https://github.com/alexa/avs-device-sdk

Следовал руководству и смог создать SDK и пример приложения, но сгенерированные библиотеки являются DLL.

Мне нужно повторно-строить его для вывода файлов DEF и .A.

Осмотрел код и увидел его на build.make (который, очевидно, был сгенерирован при первом сборке):

# External object files for target CapabilitiesDelegate
CapabilitiesDelegate_EXTERNAL_OBJECTS =

bin/libCapabilitiesDelegate.dll: CapabilitiesDelegate/src/CMakeFiles/CapabilitiesDelegate.dir/CapabilitiesDelegate.cpp.obj
bin/libCapabilitiesDelegate.dll: CapabilitiesDelegate/src/CMakeFiles/CapabilitiesDelegate.dir/build.make
bin/libCapabilitiesDelegate.dll: ACL/src/libACL.dll.a
bin/libCapabilitiesDelegate.dll: RegistrationManager/src/libRegistrationManager.dll.a
bin/libCapabilitiesDelegate.dll: C:/msys64/mingw32/lib/libcurl.dll.a
bin/libCapabilitiesDelegate.dll: AVSCommon/libAVSCommon.dll.a
bin/libCapabilitiesDelegate.dll: C:/msys64/mingw32/lib/libcurl.dll.a
    @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --bold --progress-dir=/C/Users/Thegeek/Desktop/Alexa/Alexa_32bit/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Linking CXX shared library ../../bin/libCapabilitiesDelegate.dll"
    cd /C/Users/Thegeek/Desktop/Alexa/Alexa_32bit/build/CapabilitiesDelegate/src && /C/msys64/mingw32/bin/cmake.exe -E remove -f CMakeFiles/CapabilitiesDelegate.dir/objects.a
    cd /C/Users/Thegeek/Desktop/Alexa/Alexa_32bit/build/CapabilitiesDelegate/src && /C/msys64/mingw32/bin/ar.exe cr CMakeFiles/CapabilitiesDelegate.dir/objects.a $(CapabilitiesDelegate_OBJECTS) $(CapabilitiesDelegate_EXTERNAL_OBJECTS)
    cd /C/Users/Thegeek/Desktop/Alexa/Alexa_32bit/build/CapabilitiesDelegate/src && /C/msys64/mingw32/bin/g++.exe  -DDEBUG -DACSDK_DEBUG_LOG_ENABLED -Wall -Werror -Wsign-compare -g -Wno-error=class-memaccess -DRAPIDJSON_HAS_STDSTRING  -shared -o ../../bin/libCapabilitiesDelegate.dll -Wl,--out-implib,libCapabilitiesDelegate.dll.a -Wl,--major-image-version,0,--minor-image-version,0 -Wl,--whole-archive CMakeFiles/CapabilitiesDelegate.dir/objects.a -Wl,--no-whole-archive ../../ACL/src/libACL.dll.a ../../RegistrationManager/src/libRegistrationManager.dll.a -lcurl ../../AVSCommon/libAVSCommon.dll.a -lcurl -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 

# Rule to build all files generated by this target.
CapabilitiesDelegate/src/CMakeFiles/CapabilitiesDelegate.dir/build: bin/libCapabilitiesDelegate.dll

Вверху этого файла увидел следующее:

# CMAKE generated file: DO NOT EDIT!
# Generated by "MSYS Makefiles" Generator, CMake Version 3.14

Итак ... 1. Есть мысли о том, как генерируется это build.make?Я пытался найти на кассе, но не могу найти ссылку.Я надеюсь, что смогу изменить файл, который фактически генерирует этот build.make, чтобы создать .a (статический), а не .dll.a.

С этим:
    cd /C/Users/Thegeek/Desktop/Alexa/Alexa_32bit/build/CapabilitiesDelegate/src && /C/msys64/mingw32/bin/cmake.exe -E remove -f CMakeFiles/CapabilitiesDelegate.dir/objects.a
    cd /C/Users/Thegeek/Desktop/Alexa/Alexa_32bit/build/CapabilitiesDelegate/src && /C/msys64/mingw32/bin/ar.exe cr CMakeFiles/CapabilitiesDelegate.dir/objects.a $(CapabilitiesDelegate_OBJECTS) $(CapabilitiesDelegate_EXTERNAL_OBJECTS)
    cd /C/Users/Thegeek/Desktop/Alexa/Alexa_32bit/build/CapabilitiesDelegate/src && /C/msys64/mingw32/bin/g++.exe  -DDEBUG -DACSDK_DEBUG_LOG_ENABLED -Wall -Werror -Wsign-compare -g -Wno-error=class-memaccess -DRAPIDJSON_HAS_STDSTRING  -shared -o ../../bin/libCapabilitiesDelegate.dll -Wl,--out-implib,libCapabilitiesDelegate.dll.a -Wl,--major-image-version,0,--minor-image-version,0 -Wl,--whole-archive CMakeFiles/CapabilitiesDelegate.dir/objects.a -Wl,--no-whole-archive ../../ACL/src/libACL.dll.a ../../RegistrationManager/src/libRegistrationManager.dll.a -lcurl ../../AVSCommon/libAVSCommon.dll.a -lcurl -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 

Как я могу изменить его для создания статической библиотеки вместо этого?Кажется, от этого зависят другие библиотеки?

Большое вам спасибо!

...