4

cmake (winxp sp3、cmake 2.8.4) を使用して、SDL をアプリケーションにリンクしています。

cmake_minimum_required(VERSION 2.8)

find_package(SDL REQUIRED)

set(src WIN32 main.cpp)

include_directories(${QT_INCLUDE_DIR} ${QT_QTGUI_INCLUDE_DIR} ${SDL_INCLUDE_DIR})

add_executable(test ${src})

target_link_libraries(test ${SDL_LIBRARY})

問題: SDL_LIBRARY には SDLmain.lib が含まれており、それとのリンクを避ける必要があります (main を含む別のライブラリが既にありますが、この cmakelists.txt の例には記載されていません)。

SDL_LIBRARY から SDLmain エントリを削除する必要があります。これは、ライブラリへのハードコーディングされたパスを使用せずに行う必要があります。基本的には、find_package を使用して sdl 関連の変数を設定する必要がありますが、SDLmain が SDL_LIBRARY 内にないことを確認する必要があります。また、文字列(FIND)を持たないcmake 2.8.4を使用しています。

どうやってやるの?

4

1 に答える 1

2

それは役に立ちますか?

FindSDL.cmake:

# This module responds to the the flag:
# SDL_BUILDING_LIBRARY
# If this is defined, then no SDL_main will be linked in because 
# only applications need main().
# Otherwise, it is assumed you are building an application and this
# module will attempt to locate and set the the proper link flags
# as part of the returned SDL_LIBRARY variable.
于 2012-04-07T21:20:29.447 に答える