首页 > 其他分享 >cmake编译介绍--cmakelist.txt

cmake编译介绍--cmakelist.txt

时间:2023-11-12 15:15:02浏览次数:25  
标签:cmakelist txt cmake -- sudo 编译 CMAKE main

1.cmake编译简介
  单个文件编译C/C++时: gcc main.c/g++ main.cpp
  多代码文件时:MakeFile,解决多文件编译难问题,运行make命令编译自动完成
  cmake编译引入:根据一定的规则自动生成MakeFile的,也是有语法(cmake还是依赖make编译)。自动管理makefile文件,写起来也更方便、没有makefile那么复杂
2.cmake安装
  apt安装:sudo apt-get install cmake(还是需要make命令)
  源码安装:
  sudo apt-get -y install libssl-dev
  sudo wget https://cmake.org/files/v3.25/cmake-3.25.0.tar.gz
  sudo tar -zxvf cmake-3.25.0.tar.gz
  cd cmake-3.25.0
  chmod 777 ./configure
  sudo ./configure
  sudo make -j8 && sudo make install
  //最后使用新安装的cmake替换旧版本,其中/usr/local/bin/cmake为新安装的cmake目录。
  sudo update-alternatives --install /usr/bin/cmake cmake /usr/local/bin/cmake 1 --force
  cmake --version //查看是否安装成功
  参考链接:https://www.cnblogs.com/ningao/p/17764972.html

3.cmakelist.txt介绍
  (1)预定义变量:
  PROJECT_NAME 项目名称
  PROJECT_SOURCE_DIR 工程的根目录
  PROJECT_BINARY_DIR 执行cmake命令的目录
  CMAKE_CURRENT_SOURCE_DIR 当前CMakeLists.txt文件所在目录
  CMAKE_C_FLAGS 设置C编译选项
  CMAKE_CXX_FLAGS 设置C++编译选项
  CMAKE_C_COMPILER 设置C编译器
  CMAKE_CXX_COMPILER 设置C++编译器
  EXECUTABLE_OUTPUT_PATH 设置编译后可执行文件目录
  LIBRARY_OUTPUT_PATH 设置生成的库文件目录
  (2)常用规则:
  cmake_minimum_required(VERSION 3.16) 指令cmake 版本
  project(hello_world) 设置工程名
  include_directories(${PROJECT_SOURCE_DIR}/include) 添加头文件路径
  link_directories(${PROJECT_SOURCE_DIR}/lib) 添加链接库的路径 
  add_subdirectory(module) 添加 module 子目录, 此目录下也要有CMakeLists.txt文件
  add_executable(project1 main.c) 指定编译的可执行文件
  add_library(lib1 SHARED library.c library.h) 指定生成的库文件,SHARED是生成动态库,STATIC后生成静态库
  add_compile_options() 添加编译选项
  target_link_libraries() 指定动态链接库
  install() 指定make install的目录
  set(XXXX YYYYYY) 用于设置和修改变量
  ${XXXX} 使用变量
4.例子:构建一个简单的项目
  //CMakeList.txt内容
cmake_minimum_required(VERSION 3.15)
project(project1 C)
set(CMAKE_C_STANDARD 99)
add_executable(project1 main.c)

  //main.c内容
#include <stdio.h>

int main() {
printf("Hello, CMakeList!\n");
return 0;
}
  //编译一个debug版本:
  mkdir debug && cd debug 
  cmake -DCMAKE_BUILD_TYPR=debug .. //指定编译模式为debug,此时会生成project1文件
  (cmake -DCMAKE_BUILD_TYPE=release .. 指定编译模式为release)
  参考链接:https://www.cnblogs.com/lidabo/p/16916177.html

标签:cmakelist,txt,cmake,--,sudo,编译,CMAKE,main
From: https://www.cnblogs.com/huchao12/p/17827193.html

相关文章

  • A Protection Measure-the river chief system
    Theriverandlakechiefsystem,namelytheriverchiefsystem,isanecologicalcivilizationconstructionsysteminnovationinwhichthepartyandgovernmentleadersatalllevelsserveasriverandlakechiefsandareresponsiblefororganizingandlead......
  • ctfshow——(misc入门)
    m2:将文件压缩后缀修改为.png,再打开即可。m3:将文件用simpleBPG打开即可。m4:将六个文件后缀分别改为对应格式,再打开最后一个文件即可。m5:将文件压缩在010打开,查找ctf即可得到flag。CRYPTO:c1:直接倒序即可的flag。c2:将文件粘贴复制在流览器控制台,再按回车键即可得到......
  • SharePoint 页面中插入自定义代码
    我们都知道SharePoint是对页面进行编辑的。对于一些有编程基础的人来说,可能需要对页面中插入代码,这样才能更好的对页面进行配置。但是在新版本的SharePointmodern页面来说,虽然我们可以插入Embed组件。但是Embed组件中是不允许提供Script和Html脚本的。只能插入iF......
  • cors配置标头
    1,简单请求2,非简单请求,预检请求  3,JSONP ......
  • 微信登录流程
     步骤分析:小程序端,调用wx.login()获取code,就是授权码。小程序端,调用wx.request()发送请求并携带code,请求开发者服务器(自己编写的后端服务)。开发者服务端,通过HttpClient向微信接口服务发送请求,并携带appId+appsecret+code三个参数。开发者服务端,接收微信接口服务......
  • 第二届福州大学至诚学院网络安全大赛G0DCTF Misc WP
    MISCbaby_misc1、题目信息key文件夹:还有一张图片2、解题方法观察key文件夹里的每个文件信息,发现并无什么有用的,甚至有的为空。。。看到文件名称的数字而且还给了图片,可以想到steghide隐写,而密码就是数字排列,我们按从大到小排列正好是985211steghideextract-sfflag.jp......
  • 20211105李宜时信息安全系统设计与实现学习笔记9
    信号和信号处理包括信号和中断1.信号和中断的基础定义和概述:解释信号在操作系统中的作用,它们如何与中断相关。信号类型:列出常见的UNIX/Linux信号,例如SIGINT,SIGTERM,SIGKILL等。2.UNIX/Linux信号示例实例演示:通过实际示例展示信号如何工作。代码段:提供简单的代......
  • vscode python remote debug极速入门
    本文适用范围主要适用于debugpython程序,尤其是深度学习刚入门需要使用remote连接到linux进行程序运行,想调试一下的同学。当然非深度学习也可以参考食用本文哈哈哈。极速入门版提前准备:代码仓库已经拉取到linux上面,且已经知道运行的方式。比如:项目的启动命令为:pythonpret......
  • 2023强网拟态crypto-一眼看出
    1、题目信息一眼看穿查看代码 fromCrypto.Util.numberimport*fromsecretimportflagimportgmpy2flag=b''r=getPrime(6)a=1100124079130849656541177384550975435259748146428827269932523139547213714461077464537281214967514136060046964049287422354......
  • 11.12打卡
    1.简化路径(70)返回的 规范路径 必须遵循下述格式:始终以斜杠 '/' 开头。两个目录名之间必须只有一个斜杠 '/' 。最后一个目录名(如果存在)不能 以 '/' 结尾。此外,路径仅包含从根目录到目标文件或目录的路径上的目录(即,不含 '.' 或 '..')。返回简化后得到的 规范路......