zoukankan      html  css  js  c++  java
  • 应用_Cmake

           Cmake


    开源、跨平台的构建工具,通过编写简单的配置文件去生成本地的Makefile,独立于运行平台和编译器
    不用亲自去编写Makefile,配置文件可以直接拿到其它平台上使用,无需修改,非常方便

    
    
    # 版本
    cmake_minimum_required (VERSION 2.8)
    #工程 project (demo)              
    #设置变量
    set(PROJ_SRC_PATH ${PROJECT_SOURCE_DIR}/proj/src)
    #下一级目录 add_subdirectory(proj)            #头文件() include_directories(${PROJ_INC_PATH}) 

    #编译静态库 add_library (testFunc_static STATIC ${testFunc_static}) 
    #修改静态库名称   set_target_properties (testFunc_static PROPERTIES OUTPUT_NAME
    "Func_static")
    #链接静态库(add_executable 位置前) link_libraries(${LIBRARY_OUTPUT_PATH}
    /libFunc_static.a)
    #编译动态库 add_library (testFunc_shared SHARED ${testFunc_shared})
    #修改动态库名称 set_target_properties (testFunc_shared PROPERTIES OUTPUT_NAME
    "Func_shared")
    #链接动态库(add_executable 位置前) link_libraries(${LIBRARY_OUTPUT_PATH}
    /libFunc_shared.so)

    #可执行文件 add_executable(a.
    out ${SRC_LIST})





    #链接动态静态库(add_execuble 位置后)
    target_link_libraries (main ${TESTFUNC_LIB})

    #目录所有文件变量 aux_source_directory(.
    / SRC_LIST)


    #添加编译选项
    add_compile_options(-std=c++11 -Wall) 



    #添加控制选项





    git: https://gitlab.com/panda-wangxy/cmake



    1. 静态库:(.a、.lib)

     动态库:(.so、.dll)

    优质博客:

    https://blog.csdn.net/whahu1989/article/details/82078563

    https://www.cnblogs.com/zhoug2020/p/5904206.html

    https://www.jianshu.com/p/9d246e4071d4

    Makefile


    // 1_交叉编译工具链
    CROSS_COMPILE = arm-none-linux-gnueabi-
    CC            = $(CROSS_COMPILE)gcc 
     
     //2_指定内核当前路径
    KERNEL_DIR = /home/kernel/driover/linux-3.0.8
    CUR_DIR    = $(shell pwd)
    
    //3_指定生成的文件
    MYAPP    = app
    MODULE = drv
    
    //4_编译
    all:
    make -C $(KERNEL_DIR)   M=$(CUR_DIR) modules
    ifneq ($(MYAPP),)
    $(CC)   $(myapp)    -o $(MYAPP)
    endif 
      
     //5_清除
    clean:
    make -C $(KERNEL_DIR) M=$(CUR_DIR) clean
    rm -rf $(MYAPP)
    
    //6_拷贝
    install:
    cp *.ko $(MYAPP)  /opt/rootfs/drv
    
    //7_指定当前目录文件作为内核模块编译
    obj-m += $(MODULE).o

    obj — y : 编译进内核
    obj — : 不编译进去
    obj — m : 编驱动模块


    Stay hungry, stay foolish 待续。。。
  • 相关阅读:
    HTTP请求行、请求头、请求体详解
    json_encode里面经常用到的 JSON_UNESCAPED_UNICODE和JSON_UNESCAPED_SLASHES
    php 使用fsockopen 发送http请求
    PHP与Nginx之间的运行机制以及原理
    用户对动态PHP网页访问过程,以及nginx解析php步骤
    sql优化的几种方法
    mysql锁2
    CentOS 7.4系统优化/安装软件
    Linux基本操作命令
    使用远程管理工具Xshell
  • 原文地址:https://www.cnblogs.com/panda-w/p/14519027.html
Copyright © 2011-2022 走看看