Инструкции для ОС в CMAKE: как?

Я новичок в CMAKE. Ниже приведен простой файл cmake, который хорошо работает в среде mingw windows. Проблема явно связана с функцией target_link_libraries() CMAKE, где я линкую libwsock32.a. В windows это работает и я получаю результаты.

Однако, как и ожидалось, в Linux, /usr/bin/ld будет искать -lwsock32, которого НЕТ в Linux OS.

Моя проблема: как мне указать CMAKE избегать линковки библиотеки wsock32 в Linux OS????

Любая помощь будет высоко оценена.

Мой простой файл CMake:

 PROJECT(biourl)
 set (${PROJECT_NAME}_headers ./BioSocketAddress.h  ./BioSocketBase.h ./BioSocketBuffer.h ./BioSocketCommon.h  ./BioSocketListener.h  ./BioSocketPrivate.h  ./BioSocketStream.h ./BioUrl.h BioDatabase.h )

set (${PROJECT_NAME}_sources BioSocketAddress.C  BioSocketBase.C  BioSocketCommon.C BioSocketStream.C  BioUrl.C BioDatabase.C )

add_library(${PROJECT_NAME} STATIC ${${PROJECT_NAME}_headers} ${${PROJECT_NAME}_sources} )

# linkers
#find_library(ws NAMES wsock32 PATHS ${PROJECT_SOURCE_DIR} NO_SYSTEM_ENVIRONMENT_PATH NO_DEFAULT_PATH)

target_link_libraries(${PROJECT_NAME} bioutils wsock32)

install (TARGETS ${PROJECT_NAME}
       RUNTIME DESTINATION bin
       LIBRARY DESTINATION lib
       ARCHIVE DESTINATION lib/archive )
72
задан Guy Avraham 18 September 2018 в 11:34
поделиться

1 ответ

Я хочу оставить это здесь, потому что я боролся с этим при компиляции для Android в Windows с SDK Android.

CMake различает Целевую и Серверную платформу.

Моей ЦЕЛЬЮ был Android, таким образом, переменные как CMAKE_SYSTEM_NAME имели значение "Android", и переменный WIN32 из другого ответа здесь не был определен. Но я хотел знать, была ли моя Хост-система Windows, потому что я должен был сделать несколько вещей по-другому при компиляции или в Windows или в Linux или iOS. Чтобы сделать это, я использовал CMAKE_HOST_SYSTEM_NAME, который я нашел, едва известен или упоминается где угодно, потому что для большинства людей ЦЕЛЬ и ХОСТ являются тем же, или они не заботятся.

Hope это помогает кому-то где-нибудь...

0
ответ дан 24 November 2019 в 12:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: