#c #linux #static-libraries #cross-compiling
#c #linux #статические библиотеки #перекрестная компиляция
Вопрос:
У меня есть библиотека C , и мне нужно создать .a
. Я использую a .lib
для сборки Windows моего проекта и нуждаюсь в a .a
для сборки Linux.
VS говорит, что может сделать это с помощью проекта CMake, но я не смог ничего создать из документации (https://docs.microsoft.com/en-us/cpp/linux/cmake-linux-configure?view=msvc-160 ).
Когда я создаю .lib
, я использую cmake для создания решения Visual Studio. Затем я использую MSVC 2019 для создания .lib.
РЕДАКТИРОВАТЬ: мой текущий CMakeLists.txt для библиотеки Windows.
cmake_minimum_required (VERSION 3.9)
add_definitions(-DNOT_USING_CMAKE=0)
SET(CMAKE_INSTALL_PREFIX "..." CACHE PATH "...")
project(...)
include_directories (...)
#create base library
add_library (${PROJECT_NAME} STATIC "")
set_target_properties (${PROJECT_NAME}
PROPERTIES
CXX_STANDARD 17
CXX_STANDARD_REQUIRED ON
CXX_EXTENSIONS OFF
)
add_subdirectory (...)
...
add_subdirectory (...)
install (TARGETS ${PROJECT_NAME}
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib/archive )
Комментарии:
1. В этом вопросе запрашиваются рекомендации для систем сборки, которые будут более или менее основываться на мнениях, потому что вариантов так много. Я бы рекомендовал ознакомиться с документацией CMake по созданию статической библиотеки, если вы открыты для использования CMake. cmake.org/cmake/help/latest/command/add_library.html
2. @OmnipotentEntity Я на самом деле не прошу рекомендаций для систем сборки, я просто говорю, что я открыт для решений, использующих разные системы. Я использую cmake и msvc, чтобы помочь мне создать . библиотека, но я не знаю, что потребуется для создания. a в Windows.
3. Решение состоит в том, чтобы выбрать систему и написать код системы сборки, необходимый для компиляции вашего
.a
файла. К сожалению, эта тема слишком сложная и широкая, чтобы ее можно было рассмотреть в ответе любым разумным способом. Существует много ресурсов о том, как использовать CMake для компиляции статической библиотеки в самых общих чертах. У вас есть конкретный вопрос относительно этого процесса?4. @OmnipotentEntity, я не думаю, что создание библиотеки слишком сложно, чтобы ответить на один вопрос. Например, я добавил приведенный выше файл, который создает решение VS, которое я могу создать, создающее .lib. Насколько я понимаю, вы не можете просто создать статическую библиотеку Linux в Windows с помощью cmake, потому что cmake использует свою операционную систему для контекста. Я знаю, что Microsoft рекламирует, что VS может скомпилировать с помощью cmake. Я знаком с документацией ( docs.microsoft.com/en-us/cpp/linux /… ) и прочитал его.
5. @OmnipotentEntity Я изменил вопрос, чтобы спросить, как это можно сделать с помощью Visual Studio. Может быть, пример проекта, который кто-то где-то знает, может быть полезен.