您的位置:首页 > 其它

cmake学习

2015-08-23 10:39 225 查看
cmake指令

1. include

加载cmakelists.txt文件,也可以载入预定义的cmake模块

INCLUDE(GNUInstallDirs)

2.configure_file

# setup version numbers

# TODO: Update these for each release!

set(VERSION_MAJOR 3)

set(VERSION_MINOR 0)

set(VERSION_PATCH 0)

# Update fg_version.h to match the versions number here in cmake

CONFIGURE_FILE(src/fg_version.h.in src/fg_version.h)

将文件拷贝至另一位置并修改其内容
http://www.cnblogs.com/coderfenghc/archive/2012/07/04/2576862.html
3.option

设置变量默认初始值,并且作为定义值的候选。

# option to also copy .pdb files to install directory when executing
# INSTALL target
IF(MSVC)
    OPTION(INSTALL_PDB "Also install .pdb files" ON)
ELSE()
    SET(INSTALL_PDB OFF)
ENDIF()


# FREEGLUT_BUILD_SHARED_LIBS is already a standard CMake variable, but we need to

# re-declare it here so it will show up in the GUI.

# by default, we want to build both

OPTION(FREEGLUT_BUILD_SHARED_LIBS "Build FreeGLUT shared library." ON)

OPTION(FREEGLUT_BUILD_STATIC_LIBS "Build FreeGLUT static library." ON)

4.Set

设置自定义变量

SET(FREEGLUT_HEADERS

    include/GL/freeglut.h

    include/GL/freeglut_ext.h

    include/GL/freeglut_std.h

    include/GL/glut.h

)

SET(FREEGLUT_SRCS

    ${FREEGLUT_HEADERS}

    src/fg_callbacks.c

    src/fg_cursor.c

    src/fg_display.c

    src/fg_ext.c

    src/fg_font_data.c

    src/fg_gamemode.c

    src/fg_geometry.c

    src/fg_gl2.c

    src/fg_gl2.h

    src/fg_init.c

    src/fg_init.h

    src/fg_internal.h

    src/fg_input_devices.c

    src/fg_joystick.c

    src/fg_main.c

    src/fg_misc.c

    src/fg_overlay.c

    src/fg_spaceball.c

    src/fg_state.c

    src/fg_stroke_mono_roman.c

    src/fg_stroke_roman.c

    src/fg_structure.c

    src/fg_teapot.c

    src/fg_teapot_data.h

    src/fg_videoresize.c

    src/fg_window.c

)

5.list

list提供对列表的操作,可参考http://blog.csdn.net/fuyajun01/article/details/9036477

IF(NOT FREEGLUT_GLES)

    LIST(APPEND FREEGLUT_SRCS

        src/fg_font.c

        src/fg_menu.c

    )

ELSE()

    LIST(APPEND FREEGLUT_SRCS

        src/gles_stubs.c

    )

append 添加新文件至链表中

6.add_definitions

add_definitions添加编译参数、开关

add_definitions(-DDEBUG) 添加DEBUG宏定义

7.find_package
http://www.cnblogs.com/coderfenghc/archive/2012/07/15/2592758.html
8.add_library

指定源文件生成库文件:静态、动态

IF(FREEGLUT_BUILD_SHARED_LIBS)

    ADD_LIBRARY(freeglut SHARED ${FREEGLUT_SRCS})

ENDIF()

IF(FREEGLUT_BUILD_STATIC_LIBS)

    ADD_LIBRARY(freeglut_static STATIC ${FREEGLUT_SRCS})

ENDIF()

9.win32

并不是指windows 32位操作系统,统指windows操作系统,含64位

IF(WIN32)

    LIST(APPEND LIBS winmm)

    IF(FREEGLUT_BUILD_SHARED_LIBS)

        SET_TARGET_PROPERTIES(freeglut PROPERTIES COMPILE_FLAGS -DFREEGLUT_EXPORTS)

    ENDIF()

    IF(FREEGLUT_BUILD_STATIC_LIBS)

        SET_TARGET_PROPERTIES(freeglut_static PROPERTIES COMPILE_FLAGS -DFREEGLUT_STATIC)

        # need to set machine:x64 for linker, at least for VC10, and

        # doesn't hurt for older compilers:

        # http://public.kitware.com/Bug/view.php?id=11240#c22768
        IF (CMAKE_CL_64)

            SET_TARGET_PROPERTIES(freeglut_static PROPERTIES STATIC_LIBRARY_FLAGS "/machine:x64")

        ENDIF()

    ENDIF()

10.CMAKE_CL_64

定义windows 64位平台

IF(CMAKE_CL_64)  

    SET(PLATFORM x64)      

ELSE(CMAKE_CL_64)  

    SET(PLATFORM x86)  

ENDIF(CMAKE_CL_64) 

11.set_target_properties

设置目标属性,改变其架构方式
http://www.cnblogs.com/coderfenghc/archive/2012/10/20/2712806.html
12.install

IF(FREEGLUT_BUILD_SHARED_LIBS)

    INSTALL(TARGETS freeglut

            RUNTIME DESTINATION bin

            LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}

            ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}

    )

    IF(INSTALL_PDB)

        INSTALL(FILES ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/Debug/freeglut${CMAKE_DEBUG_POSTFIX}.pdb

            DESTINATION bin
CONFIGURATIONS Debug)

    ENDIF()

ENDIF()
http://www.cnblogs.com/coderfenghc/archive/2012/08/12/2627561.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  cmake freeglut