美文网首页
CMake总结

CMake总结

作者: 腩啵兔子 | 来源:发表于2017-04-21 16:03 被阅读278次

    CMakeLists.txt

    cmake_minimum_required (VERSION 2.8) cmake最低版本为2.8

    project (Demo1) 项目的名称是Demo1

    add_executable(Demo main.cc) 将main.cc的文件编译名成Demo的可执行文件

    aux_source_directory(. DIR_SRCS) 将当前目录下的可执行文件放入变量DIR_SRCS中

    add_executable(Demo ${DIR_SRCS}) 将DIR_SRCS中的文件编译名为Demo的可执行文件

    add_subdirectory(math) 指明本项目包含一个子目录 math,这样 math 目录下的 CMakeLists.txt 文件和源代码也会被处理

    target_link_libraries(Demo MathFunctions) 指明可执行文件 main 需要连接一个名为 MathFunctions 的链接库

    add_library (MathFunctions ${DIR_LIB_SRCS}) 将DIR_LIB_SRCS中的文件编译成静态文件

    include_directories ("${PROJECT_SOURCE_DIR}/math") 添加头文件的搜索路径,相当于指定gcc的-I参数

    add_custom_command(
        TARGET armc-010 POST_BUILD
        COMMAND ${CMAKE_OBJCOPY} ./armc-010${CMAKE_EXECUTABLE_SUFFIX} -O binary ./kernel.img
        WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
        COMMENT "Convert the ELF output file to a binary image" )
    

    为一个目标(比如一个库文件或者可执行文件)加一条自定义命令。这种格式可以用于目标构建前或构建后的一些操作。这条命令会成为目标的一部分,并且只有目标被构建时才会执行。如果目标已经构建了,该目标将不会执行。如果指定了WORKING_DIRECTORY选项,这条命令会在给定的路径下执行。

    内部变量

    CMAKE_C_FLAGS: 编译C文件时的选项,如-g;也可以通过add_definitions添加编译选项
    PROJECT_SOURCE_DIR: 项目顶层CMakeLists.txt所在路径, 也叫做CMAKE_SOURCE_DIR
    PROJECT_BINARY_DIR: 执行cmake命令所在的路径,也叫做CMAKE_BINARY_DIR

    DCMAKE_TOOLCHAIN_FILE

    • CMAKE_SYSTEM_NAME: 即你目标机target所在的操作系统名称,比如ARM或者Linux你就需要写"Linux",如果Windows平台你就写"Windows",如果你的嵌入式平台没有相关OS你即需要写成"Generic",只有当CMAKE_SYSTEM_NAME这个变量被设置了,CMake才认为此时正在交叉编译,它会额外设置一个变量CMAKE_CROSSCOMPILING为TRUE。
    • CMAKE_SYSTEM_PROCESSOR: 系统的CPU型号, CMake doesn't use this setting on a system it doesn't know.
    • CMAKE_C_COMPILER: 顾名思义,即C语言编译器,这里可以将变量设置成完整路径或者文件名,设置成完整路径有一个好处就是CMake会去这个路径下去寻找编译相关的其他工具比如linker,binutils等,如果你写的文件名带有arm-elf等等前缀,CMake会识别到并且去寻找相关的交叉编译器。

    eg:

    toolchain.cmake
    CMakeLists.txt

    相关文章

      网友评论

          本文标题:CMake总结

          本文链接:https://www.haomeiwen.com/subject/zjydzttx.html