Macos の場合、何らかのフレームワークにリンクしたいと思います。Windowsで、いくつかのライブラリにリンクしたいと思います。
たとえば、OpenGL フレームワーク、cmake を使用してこの要件を表現するにはどうすればよいですか?
OpenGL にリンクすることを CMake に伝えるには、以下を .xml に追加しますCMakeLists.txt
。
find_package(OpenGL REQUIRED)
include_directories(${OPENGL_INCLUDE_DIR})
target_link_libraries(<your program name> ${OPENGL_LIBRARIES})
find_package
OpenGL を探し、いくつかの OPENGL* 変数を設定することで OpenGL がどこにあるかをスクリプトの残りの部分に伝えます。include_directories
OpenGL ヘッダーの場所をコンパイラに指示します。target_link_libraries
CMake に OpenGL でリンクするように指示します。
次のコードは、オペレーティング システムに基づいてさまざまなアクションを実行します。
if(WIN32)
#Windows specific code
elseif(APPLE)
#OSX specific code
endif()
次のマクロ コードを試すことができます。
macro(ADD_OSX_FRAMEWORK fwname target)
find_library(FRAMEWORK_${fwname}
NAMES ${fwname}
PATHS ${CMAKE_OSX_SYSROOT}/System/Library
PATH_SUFFIXES Frameworks
NO_DEFAULT_PATH)
if( ${FRAMEWORK_${fwname}} STREQUAL FRAMEWORK_${fwname}-NOTFOUND)
MESSAGE(ERROR ": Framework ${fwname} not found")
else()
TARGET_LINK_LIBRARIES(${target} PUBLIC "${FRAMEWORK_${fwname}}/${fwname}")
MESSAGE(STATUS "Framework ${fwname} found at ${FRAMEWORK_${fwname}}")
endif()
endmacro(ADD_OSX_FRAMEWORK)
例
ADD_OSX_FRAMEWORK(Foundation ${YOUR_TARGET}) # Add the foundation OSX Framework
このサンプルコードはこちらにあります