ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

CMake 一些语法

2022-01-19 16:04:32  阅读:190  来源: 互联网

标签:STATUS set CMake name 语法 source caffe cpp 一些


1.message语法 打印信息

message( [STATUS|WARNING|AUTHOR_WARNING|FATAL_ERROR|SEND_ERROR]
  "message to display" ...)

可以用下述可选的关键字指定消息的类型:

(无) = 重要消息;
 STATUS = 非重要消息;
 WARNING = CMake 警告, 会继续执行;
 AUTHOR_WARNING = CMake 警告 (dev), 会继续执行;
 SEND_ERROR = CMake 错误, 继续执行,但是会跳过生成的步骤;
 FATAL_ERROR = CMake 错误, 终止所有处理过程;

输出变量的值:

SET(USER_KEY, "Hello World")
MESSAGE(STATUS "this var key = ${USER_KEY}.")

caffe cmakelist 1

在caffe源码tools目录下,目录结构如下:

├── caffe.cpp
├── caffe_test_c.cpp
├── CMakeLists.txt
├── compute_image_mean.cpp
├── convert_imageset.cpp
├── extra
│   ├── extract_seconds.py
│   ├── launch_resize_and_crop_images.sh
├── extract_features.cpp
├── upgrade_net_proto_binary.cpp
├── upgrade_net_proto_text.cpp
└── upgrade_solver_proto_text.cpp

这里面的cmakelist就是把每个cpp生成一个可执行文件。

可以学习学习写法:

# Collect source files
file(GLOB_RECURSE srcs ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp)

#MESSAGE(STATUS "srcs = ${srcs}.")

MESSAGE(STATUS "Caffe_LINK = ${Caffe_LINK}")

# Build each source file independently
foreach(source ${srcs})
  get_filename_component(name ${source} NAME_WE)
  MESSAGE(STATUS "name = ${name}")

  # caffe target already exits
  if(name MATCHES "caffe")
    MESSAGE(STATUS "MATCHES name = ${name}")
    set(name ${name}.bin)
  endif()

  # target
  add_executable(${name} ${source})
  target_link_libraries(${name} ${Caffe_LINK})
  caffe_default_properties(${name})

  # set back RUNTIME_OUTPUT_DIRECTORY
  caffe_set_runtime_directory(${name} "${PROJECT_BINARY_DIR}/tools")
  caffe_set_solution_folder(${name} tools)

  # restore output name without suffix
  if(name MATCHES "caffe.bin")
    set_target_properties(${name} PROPERTIES OUTPUT_NAME caffe)
  endif()

  # Install
  install(TARGETS ${name} DESTINATION ${CMAKE_INSTALL_BINDIR})

endforeach(source)

一般独立的生成一个可执行文件写法:

cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
project(test_glogs)
 
SET(CMAKE_BUILD_TYPE Debug)
 
#glog
include_directories(/data_2/lib/glog/include/)
link_directories(/data_2/lib/glog/lib)
 
add_executable(main main.cpp)
target_link_libraries(main glog)
set_property(TARGET main PROPERTY CXX_STANDARD 11)

标签:STATUS,set,CMake,name,语法,source,caffe,cpp,一些
来源: https://www.cnblogs.com/yanghailin/p/15822637.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有