如何使用Cmake框架?

时间:2014-12-21 01:13:10

标签: cmake cmake-gui

对于Macos,我想链接到一些框架。在Windows中,我想链接到一些库。

例如,OpenGL Framework,如何使用cmake表达这个要求?

3 个答案:

答案 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