当前位置: 首页 > news >正文

建一个外贸网站要多少钱海南建站中心

建一个外贸网站要多少钱,海南建站中心,太原建站司点击查看,盐城市城乡和住房建设厅网站CMake教程 - basic point 1 - Building a Basic Project 最基本的CMake项目是由单个源代码文件构建的可执行文件。对于像这样简单的项目,只需要一个带有三个命令的CMakeLists.txt文件。 注意:尽管CMake支持大写、小写和混合大小写命令,但小…

CMake教程 - basic point

1 - Building a Basic Project

最基本的CMake项目是由单个源代码文件构建的可执行文件。对于像这样简单的项目,只需要一个带有三个命令的CMakeLists.txt文件。

注意:尽管CMake支持大写、小写和混合大小写命令,但小写命令是首选,并将在整个教程中使用。

任何项目的顶级CMakeLists.txt都必须从使用cmake_minimum_required()命令指定一个最小的CMake版本开始。这将建立策略设置,并确保以下CMake功能使用兼容版本的CMake运行。要启动一个项目,我们使用project()命令来设置项目名称。这个调用对于每个项目都是必需的,并且应cmake_minimum_required()之后不久就被调用。我们将看到,此命令还可以用于指定其他项目级别信息,如语言或版本号。最后,add_executable()命令告诉CMake使用指定的源代码文件创建一个可执行文件。

语法说明

设置项目cmake最低版本要求

cmake_minimum_required(VERSION <min>[...<policy_max>] [FATAL_ERROR])

设置项目名称,同时也设定了几个环境变量

project(<PROJECT-NAME> [<language-name>...])
project(<PROJECT-NAME>[VERSION <major>[.<minor>[.<patch>[.<tweak>]]]][DESCRIPTION <project-description-string>][HOMEPAGE_URL <url-string>][LANGUAGES <language-name>...])
PROJECT_SOURCE_DIR    当前source code 路径
PROJECT_BINARY_DIR    当前source bin路径

使用指定的souce file 向项目中添加一个可执行文件

add_executable(<name> [WIN32] [MACOSX_BUNDLE][EXCLUDE_FROM_ALL][source1] [source2 ...])

demo

main.c

#include <stdio.h>int main(int argc, char **argv)
{printf("hello world\n");return 0;
}

CMakeLists.txt

#cmake version
cmake_minimum_required(VERSION 3.2)#project name
project(basic_demo)message("echo project dir is ${PROJECT_SOURCE_DIR}")
message("echo project bin is ${PROJECT_BINARY_DIR}")
#add executable
add_executable(basic_demo main.c)

编译

可以创建一个文件夹用于存放cmake产生的文件,然后执行 cmake . , 编译文件cmake --build .

2 - Specifying the C++ Standard

CMake有一些特殊的变量,这些变量要么是在幕后创建的,要么是在项目代码中设置的。许多这些变量都以CMAKE开头。在为项目创建变量时避免这种命名约定。其中两个特殊的用户可设置变量是CMAKE_CXX_STANDARD和CMAKE_CXX_STANDARD_REQUIRED。它们可以一起用于指定构建项目所需的c++标准。

变量说明

CMAKE_CXX_STANDARD

如果在创建目标器时设置了CXX STANDARD目标器属性的默认值,c++标准,其特性被要求构建此目标。此属性指定构建此目标所要求的c++标准的特性。对于某些编译器,这会导致在编译行中添加一个标志,如-std=gnu++11。对于没有标准级别概念的编译器,例如2015 Update 3之前的Microsoft Visual c++,这没有影响。支持的值有:

CMAKE_CXX_STANDARDversion
98C++98
11C++11
14C++14
17C++17
20C++20
23C++23
CXX_STANDARD_REQUIRED

如果在创建目标器时设置了CXX_STANDARD_REQUIRED目标器属性,则该属性为默认值。

描述CXX STANDARD的值是否是必需的。如果此属性设置为ON,则CXX_STANDARD目标属性的值被视为需求。如果此属性为OFF或未设置,则CXX_STANDARD目标属性被视为可选属性,并且如果所请求的不可用,则可能“衰减”到以前的标准。对于没有标准级别概念的编译器,例如MSVC 1800 (Visual Studio 2013)和更低的版本,这没有影响。

demo

main.cpp

#include <iostream>int main(int argc, char **argv)
{std::string var = "3.14156";const double input_value = std::stod(var);  //stod是c11 中有的 ,如果不设定cxx version 就会报错std::cout << input_value << std::endl;std::cout << "hello world " << std::endl;return 0;
}

CMakeLists.txt

#set cmake version
cmake_minimum_required(VERSION 3.2)#project name
project(basic_demo2)#set CXX version
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED true)#add executable
add_executable(basic_demo2 main.cpp)

3 - Adding a Version Number and Configured Header File

有时,在CMakelists.txt文件中定义的变量在源代码中也有,这可能很有用。在这种情况下,我们希望打印项目版本。实现这一点的一种方法是使用已配置的头文件。我们创建了一个包含一个或多个变量要替换的输入文件。这些变量具有特殊的语法,看起来像@VAR@。然后,我们使用coffet_file()命令将输入文件复制到给定的输出文件中,并将这些变量替换为CMakelists.txt文件中VAR的当前VAR值。虽然我们可以直接在源代码中编辑版本,但使用这个特性是首选,因为它创建了一个单一的真相来源,并避免了重复。

变量说明

<PROJECT_NAME>_VERSION_MAJOR

项目的主版本号

<PROJECT_NAME>_VERSION_MINOR

项目的次版本号

拷贝文件到另外一个位置并且修改内容

configure_file(<input> <output>[NO_SOURCE_PERMISSIONS | USE_SOURCE_PERMISSIONS |FILE_PERMISSIONS <permissions>...][COPYONLY] [ESCAPE_QUOTES] [@ONLY][NEWLINE_STYLE [UNIX|DOS|WIN32|LF|CRLF] ])

input file和outfile对比

inputfile					outfile
#cmakedefine VAR			#define VAR or #undef VAR
#cmakedefine VAR 1			#define VAR 01
#cmakedefine01 VAR			#define VAR 1 or #define VAR 0input file中的变量使用@var@  or ${var} $CACHE{VAR} $ENV{VAR}

加入头文件路径

target_include_directories(<target> [SYSTEM] [AFTER|BEFORE]<INTERFACE|PUBLIC|PRIVATE> [items1...][<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])

demo

main.cpp

#include <iostream>
#include "basicconfig.h"int main(int argc, char **argv)
{std::cout << "verson major" << basic_demo_VERSION_MAJOR << "version minor" << basic_demo_VERSION_MINOR << std::endl;std::cout << "hello world " <<std::endl;return 0;
}

CMakeLists.txt

cmake_minimum_required(VERSION 3.2)project(basic_demo VERSION 1.2)
configure_file(basicconfig.h.in basicconfig.h)add_executable(basicdemo main.cpp)
target_include_directories(basicdemo PRIVATE  ${PROJECT_SOURCE_DIR})           

basicconfig.h.in

#define basic_demo_VERSION_MAJOR @basic_demo_VERSION_MAJOR@
#define basic_demo_VERSION_MINOR @basic_demo_VERSION_MINOR@
http://www.yayakq.cn/news/703214/

相关文章:

  • 查询wordpress主题南昌网站排名优化费用
  • 济南网站建设seo优化经典软文案例50字
  • 电子商务网站创建方案做一个网站
  • 网站开发工作总结手机ps网页版在线制作
  • 做模拟人生类的游戏下载网站如何识别一个网站是否做的好
  • 网站开发语言分析wordpress博客 centtos
  • 网站模版免费下载seo点击
  • 嘉兴哪里做网站跳转到手机网站代码
  • 广州致格广告有限公司网站app软件开发平台游戏
  • 拍卖网站模板下载宁波自助建站模板
  • 网站备案各种问题汇总成都住房和城乡建设局网站
  • 帮忙做网站免费建设网站设计页面
  • 网站专业优化公司单页面网站如何优化引流
  • 专业网站制作公司案例青岛建立网站电话
  • 织梦网站管理安装广告设计培训班学校有哪些
  • 美声广告网站建设外 网站 公司
  • 电脑怎样做轰炸网站自动化培训机构排名
  • 成都网站开发制作网站页面设计考虑要素
  • 免费字体网站百度手机app下载安装
  • 华强北做网站网页设计div布局
  • 贵阳开发网站建设企业邮箱查询
  • 广告公司网站模版跆拳道东莞网站建设
  • 教育机构的网站怎么做购物网站开发教程中文版
  • 建站服务网络公司哪个网站可以建设网站
  • 个人网站设计要求北京网页设计制作网站
  • 大庆企业网站建设公司chatgpt 网址
  • 深圳做网站的网络公产品网络推广深圳
  • 怎么做二维码微信扫后直到网站新浪网站用什么语言做的
  • 一个网站费用网站用什么系统
  • 卓越网站建设的优点哈尔滨自助建站模板