美文网首页
cmake自动选择编译器脚本

cmake自动选择编译器脚本

作者: chenwr2018 | 来源:发表于2019-12-11 15:46 被阅读0次

一、什么是cmake

CMake 是一个跨平台的,开源的构建系统(BuildSystem)。CMake 可以通过 CMakeLists.txt 文件来产生特定平台的标准的构建文件,例如:为 Unix 平台生成makefiles文件(使用GCC编译),为 Windows MSVC 生成 projects/workspaces(使用VS IDE编译)或Makefile文件(使用nmake编译)。
关键一点是跨平台,并且在Linux平台最终生成makefile来进行编译。

二、常用知识点

1、静态库链接
target_link_libraries(dlib_demo libdlib.a)

2、动态库链接
target_link_libraries(dlib_demo dlib)

3、开启动态库编译
cmake .. -DBUILD_SHARED_LIBS=ON

cmake .. :注意命令后面的点号,代表本目录的上一级目录。
执行【cmake ..】之后,系统自动生成了:CMakeFiles, CMakeCache.txt, cmake_install.cmake 等文件,并且生成了Makefile。不用太关注这些文件的意义,重点是它自动生成了Makefile。

4、cmake设置变量
set(SRC_CPP dlib_face_recognition.cpp)

追加变量值
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -std=c++11 -W")

5、cmake打印变量值
message("src cpp = ${SRC_CPP}")


image

三、实现cmake选择编译

执行命令cmake .. -DHISI=1或者-DHISI=ON进行海思编译器编译demo。
demo如下:

cmake_minimum_required(VERSION 2.8.12)
project(eignface_demo)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -lstdc++ -lm")
set(OPENCV_LIB opencv_highgui opencv_objdetect opencv_core opencv_imgproc opencv_contrib)
set(SRC_CPP EigenFace.cpp)

if (HISI)
    set(TOOLCHAIN_DIR "/opt/hisi-linux-nptl/arm-hisiv100-linux/target")
    set(CMAKE_FIND_ROOT_PATH ${TOOLCHAIN_DIR})
    set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
    set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
    set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
    set(CMAKE_CXX_COMPILER ${TOOLCHAIN_DIR}/bin/arm-hisiv100nptl-linux-g++)
    set(CMAKE_C_COMPILER ${TOOLCHAIN_DIR}/bin/arm-hisiv100nptl-linux-gcc)
    include_directories(./hisi_opencv/include/)
    link_directories(./hisi_opencv/lib/)
    message("-- Use hisi compile demo")
    add_executable(eignface_hisi  ${SRC_CPP})
    target_link_libraries(eignface_hisi ${OPENCV_LIB})
else()
     set(CMAKE_C_COMPILER "/usr/bin/gcc")
     include_directories(./gcc_opencv/include/)
     link_directories(./gcc_opencv/lib/)
     message("-- Use gcc compile demo")
     add_executable(eignface_gcc  ${SRC_CPP})
     target_link_libraries(eignface_gcc ${OPENCV_LIB})
endif()
image

参考资料:

CMake---基础练习1 - WP的烂笔头 - 博客园 https://www.cnblogs.com/carle-09/p/11684575.html

Cmake链接静态库(一) - ox0080的博客 https://blog.csdn.net/ox0080/article/details/96453985

Cmake 设置交叉编译环境_Linux编程_Linux公社-Linux系统门户网站 https://www.linuxidc.com/Linux/2014-03/98622.htm

相关文章

  • cmake自动选择编译器脚本

    一、什么是cmake CMake 是一个跨平台的,开源的构建系统(BuildSystem)。CMake 可以通过 ...

  • CMake 入门实战

    什么是 CMake CMake是个一个开源的跨平台自动化建构系统,用来管理软件建置的程序,并不相依于某特定编译器。...

  • CMAKE_GNUtoMS:将GNU格式库转换为MSVC格式

    在Windows上使用MinGW(GCC)编译器时,可以定义CMAKE_GNUtoMS变量,自动将GCC格式库.d...

  • Opencv3.3.0+VisualStudio2017+ope

    步骤一 Cmake Opencv 1.下载Cmake编译器,网址链接 https://cmake.org/down...

  • cmake学习小结

    CMake简介 CMake是个一个开源的跨平台自动化建构系统,用来管理软件建置的程序,并不依赖于某特定编译器,并可...

  • CMake option选项开关

    CMake option 使用场景 : 编译脚本传递参数 -> CMake脚本接收option -> 源代码宏 编...

  • cmake使用

    tags: 嵌入式categories: 开发 cmake 总结 交叉编译 设置编译器CMAKE_FORCE_C_...

  • 配置Windows开发机环境

    配置CLion 下载 配置CMake 配置编译器MinGW

  • make&&cmake

    make与cmake 原文件--camkelist(cmake依据的规则) ---cmake(自动生成makefi...

  • 5. centos下安装openscenegraph环境

    配置OpenGL开发环境 安装 gcc 编译器 cmake 安装文件编译工具首先下载cmake 3.6,并解压,检...

网友评论

      本文标题:cmake自动选择编译器脚本

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