cmake学习

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位平台

  1. IF(CMAKE_CL_64)  
  2.     SET(PLATFORM x64)      
  3. ELSE(CMAKE_CL_64)  
  4.     SET(PLATFORM x86)  
  5. 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














你可能感兴趣的:(c++/c)