1. ホーム
  2. c++

[解決済み] CMAKEのOS別説明書:How to?

2022-05-17 18:35:52

質問

CMAKEの初心者です。以下は、mingw環境windowsでうまく動作する簡単なcmakeファイルです。問題は、明らかに target_link_libraries() という関数にあります。

しかし、予想通り、Linuxでは /usr/bin/ld を探すことになります。 -lwsock32 を探しますが、Linux OS には存在しません。

私の問題は、Linux OSでwsock32ライブラリをリンクしないようにCMAKEに指示するにはどうしたらいいでしょうか?

どのようなヘルプも非常に高く評価されます。

私のシンプルな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 )

どのように解決するのですか?

使用方法

if (WIN32)
    #do something
endif (WIN32)

または

if (UNIX)
    #do something
endif (UNIX)

または

if (MSVC)
    #do something
endif (MSVC)

など

見る CMakeの便利な変数 および CMake チェックプラットフォーム