zoukankan      html  css  js  c++  java
  • linux工程构建:make,cmake

    make


    cmake


    CMake是一个比make更高级的编译配置工具,它可以根据不同平台、不同的编译器,生成相应的Makefile或者vcproj项目。通过编写CMakeLists.txt,可以控制生成的Makefile,从而控制编译过程。CMake自动生成的Makefile不仅可以通过make命令构建项目生成目标文件,还支持安装(make install)、测试安装的程序是否能正确执行(make test,或者ctest)、生成当前平台的安装包(make package)、生成源码包(make package_source)、产生Dashboard显示数据并上传等高级功能,只要在CMakeLists.txt中简单配置,就可以完成很多复杂的功能,包括写测试用例。如果有嵌套目录,子目录下可以有自己的CMakeLists.txt。

    外部编译
    外部编译,一个最大的好处是,对于原有的工程没
    有任何影响,所有动作全部发生在编译目录。通过这一点,也足以说服我们全部采用外部编
    译方式构建工程。

    #确定cmake最低版本需求
    cmake_minimum_required(VERSION 3.0.0)
    
    #打印
    MESSAGE(STATUS "This is install dir " ${CMAKE_INSTALL_PREFIX})
    
    #确定工程名
    #(这一行会引入两个变量XXX_BINARY_DIR (二进制文件保存路径)和 #XXX_SOURCE_DIR(源代码保存路径))
    project(XXX)
    
    #添加需要的库
    set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} "/usr/local/share/OpenCV")
    find_package(OpenCV 3.2.0 REQUIRED)
    
    #添加需要的头文件
    include_directories(include)
    include_directories(${OpenCV_INCLUDE_DIRS})
    include_directories(/usr/local/cuda-8.0/include/)
    
    #确定编译语言
    #add_definitions(-std=c++11)
    set(CMAKE_CXX_STANDARD 11)
    
    #设定变量
    ADD_DEFINITIONS( -DGPU -DCUDNN )
    
    #添加源代码
    aux_source_directory(${CMAKE_CURRENT_LIST_DIR}/src src)
    
    #编译动态库并链接库文件
    link_directories(${PROJECT_SOURCE_DIR})
    add_library(plate_recognition SHARED ${SRC})
    target_link_libraries(plate_recognition ${OpenCV_LIBS})
    target_link_libraries(plate_recognition -llianghao  -lpthread -lm -lstdc++)
    
    #生成可执行文件
    link_directories(${PROJECT_SOURCE_DIR})
    add_executable(Test ${SRC})
    target_link_libraries(Test ${OpenCV_LIBS})
    target_link_libraries(Test -llianghao  -lpthread -lm -lstdc++)
    
    #make install
    SET(CMAKE_INSTALL_PREFIX ${CMAKE_SOURCE_DIR})
    
    INSTALL(TARGETS myengine
        DESTINATION ../assets/bin/
       )

     

    项目删除:
    CMake 默认不提供 uninstall 这个 target,想要的话,输入:

    
    

    xargs rm < install_manifest.txt

    对于不修改配置的项目足够了,manifest.txt 是CMake 生成的安装文件列表。

     

    参考:

    使用CMake组织C++工程

    一些书:

    深入学习cmake

    《cmake实践》

    《mastering cmake》

    CMake学习之路

  • 相关阅读:
    在线工具把C#代码转换成VB.NET代码
    document.execCommand()函数可用参数(整理收集)
    终于搞定sp_executesql的调用
    IIS 未被授权查看该页
    ajax学习笔记(1)
    Wscript.Shell 对象详细介绍!!特好的东西
    ASP.NET AJAX 客户端生命周期事件
    本人扩展的可绑定Dataset的Treeview,遇到不能展开的问题
    固定表头简单实现
    C#实现屏幕录像
  • 原文地址:https://www.cnblogs.com/losophy/p/9405685.html
Copyright © 2011-2022 走看看