对于Macos,我想链接到一些框架。在Windows中,我想链接到一些库。
例如,OpenGL Framework,如何使用cmake表达这个要求?
答案 0 :(得分:5)
您可以尝试以下代码:
target_link_libraries(<target name>
"-framework AVFoundation"
"-framework CoreGraphics"
"-framework CoreMotion"
"-framework Foundation"
"-framework MediaPlayer"
"-framework OpenGLES"
"-framework QuartzCore"
"-framework UIKit"
)
答案 1 :(得分:2)
要告诉CMake您要链接到OpenGL,请将以下内容添加到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()
答案 2 :(得分:1)
您可以尝试以下宏代码:
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
您可以找到此示例代码here