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

建站工具的优点浙江省建设培训中心网站首页

建站工具的优点,浙江省建设培训中心网站首页,wordpress数据库更改账号密码,aspcms网站地图目录 添加一个option! 添加一个option! option,正如其意,就是选项的意思。我们这里需要演示一下option的做法。 option对于大型的工程必然是非常常见的:一些模块会被要求编译,另一些客户不准备需要这些模块。option就是将这种需…

目录

添加一个option!


添加一个option!

option,正如其意,就是选项的意思。我们这里需要演示一下option的做法。

option对于大型的工程必然是非常常见的:一些模块会被要求编译,另一些客户不准备需要这些模块。option就是将这种需求组织起来,让脚本构建者有了清晰的逻辑组成的抓手。

举个最最简单的例子。我们打算写一个模块,这个模块其实就是根据用户静态的选择打印不同的话:

impl.c

void implA();
void implB();
​
​
void impl()
{
#ifdef USE_SPECIAL_IMPLimplB();
#elseimplA();
#endif
}

impl(A/B).c

// implA.c
#include <stdio.h>
​
void implA()
{printf("The Implement function is using Implements A");
}
​
// implB.c
#include <stdio.h>
​
void implB()
{printf("The Implement function is using Implements B");printf("\n which is surprised :)");
}

他们都在optional_implements文件夹中:

➜  tree -L 2
.
├── build
|   ├─ ... # Ommited
├── CMakeLists.txt
├── Config.h.in
├── main.c
├── MathLibs
│   ├── CMakeLists.txt
│   ├── mathLibs.c
│   └── mathLibs.h
└── optional_implements├── implA.c├── implB.c└── impl.c

下面就是在cmake中体现出来了,我们使用的就是option这个命令:

option(USE_SPECIAL_IMPL "the special implements of impl function" ON)

option这个命令的格式非常简单:就是目标控制变量 + 描述 + 默认定义。这里的ON表达是开启的意思。OFF就是关闭:

cmake .. -DUSE_SPECIAL_IMPL=OFF

cmake当中就是就是采用D + 控制变量名称=ON/OFF来决定的。

更好的办法是使用cmake-gui来进行可视化的构建:

我们继续实现这个根据option来决定编译行为不一致的实现。很简单,我们只需要控制:

if (USE_SPECIAL_IMPL)set(CharliesDemoSrc ${CharliesDemoSrc} optional_implements/implB.c)
else()set(CharliesDemoSrc ${CharliesDemoSrc} optional_implements/implA.c)
endif()
​
​
add_executable(CharliesDemo ${CharliesDemoSrc})
​
if (USE_SPECIAL_IMPL)target_compile_definitions(CharliesDemo PRIVATE "USE_SPECIAL_IMPL")
endif()

下面给出现在CMakeLists.txt脚本的全貌:

cmake_minimum_required(VERSION 3.30)
​
project(CharliesDemoVERSION 1.0)
​
set(CharlieConstVar 1)
set(CharlieConstDouble 1.1)
​
configure_file(Config.h.in Config.h)
add_subdirectory(MathLibs)
set(CharliesDemoSrc main.c optional_implements/impl.c)
​
option(USE_SPECIAL_IMPL "the special implements of impl function" ON)
​
if (USE_SPECIAL_IMPL)set(CharliesDemoSrc ${CharliesDemoSrc} optional_implements/implB.c)
else()set(CharliesDemoSrc ${CharliesDemoSrc} optional_implements/implA.c)
endif()
​
​
add_executable(CharliesDemo ${CharliesDemoSrc})
​
if (USE_SPECIAL_IMPL)target_compile_definitions(CharliesDemo PRIVATE "USE_SPECIAL_IMPL")
endif()
​
target_include_directories( CharliesDemo PUBLIC "${PROJECT_BINARY_DIR}""${PROJECT_SOURCE_DIR}/MathLibs")
target_link_libraries(CharliesDemo PUBLIC MathLib)

看官自行尝试cmake的使用

➜  cd build && cmake .. -DUSE_SPECIAL_IMPL=OFF && make
-- Configuring done (0.0s)
-- Generating done (0.0s)
-- Build files have been written to: /home/Charliechen/Works/cmake_learning/build
[ 16%] Building C object MathLibs/CMakeFiles/MathLib.dir/mathLibs.c.o
[ 33%] Linking C static library libMathLib.a
[ 33%] Built target MathLib
[ 50%] Building C object CMakeFiles/CharliesDemo.dir/main.c.o
[ 66%] Building C object CMakeFiles/CharliesDemo.dir/optional_implements/impl.c.o
[ 83%] Building C object CMakeFiles/CharliesDemo.dir/optional_implements/implA.c.o
[100%] Linking C executable CharliesDemo
[100%] Built target CharliesDemo
➜  ./CharliesDemo
VERISON_MAJOR: 11 + 2 = 3The Implement function is using Implements A⏎     

➜  cd build &&  cmake .. -DUSE_SPECIAL_IMPL=ON && make
-- Configuring done (0.0s)
-- Generating done (0.0s)
-- Build files have been written to: /home/Charliechen/Works/cmake_learning/build
[ 33%] Built target MathLib
[ 50%] Building C object CMakeFiles/CharliesDemo.dir/main.c.o
[ 66%] Building C object CMakeFiles/CharliesDemo.dir/optional_implements/impl.c.o
[ 83%] Building C object CMakeFiles/CharliesDemo.dir/optional_implements/implB.c.o
[100%] Linking C executable CharliesDemo
[100%] Built target CharliesDemo
VERISON_MAJOR: 11 + 2 = 3The Implement function is using Implements Bwhich is surprised :)⏎  
http://www.yayakq.cn/news/681637/

相关文章:

  • 贵港网站设计wordpress多站点 用户同步
  • 企业网站建设联系方式常见网站漏洞
  • 荆门市网站建设微信开店小程序怎么弄
  • 网站制作 太原做网站赚钱但又不想开公司
  • 如何做网站模版wordpress 3.5 基础教程 王皓 视频下载
  • 如何对网站做引擎优化江苏企业seo推广
  • 做网站一定要psd吗商城类网站功能
  • 马鞍山网站建设电话实时热点新闻事件2021
  • app开发好还是网站开发好通过阿里云建设企业网站
  • h5手机网站开发demo网站广告布局
  • 安陆网站asp.net做网站有何意义
  • 怎样创办网站企业商场网站建设
  • cms二次开发网站建设济南网络推广公司排行榜
  • 外贸做的好的网站51模板网
  • 完全自定义纯代码打造你的wordpress站点侧边栏腾讯云怎样做网站
  • 重庆模板建站软件电商网站建设建站方案
  • 重庆住房建设部网站迈创网站建设
  • 网站建设公司在哪里宣传湛江建设局网站
  • 电商网站创办过程网页设计制作个人主页欣赏
  • 购物网站建站规划类似淘宝网站建设费用
  • google竞价推广网站快速优化排名排名
  • 有多个网页的大网站如何做天坛整装体验馆地址
  • 网站外包开发 代码的版权问题做公司简介需要多少钱
  • flash网站优缺点wordpress 旅游插件
  • 网站咨询界面设计杭州工业设计
  • wordpress菜单跳转页面跳转太原网站优化方案
  • 用天地图做网站福田产品设计
  • 赣州网站建设顺企网购物网站底部设计
  • 昆山智能网站建设怎么把自己做的网站发布到网上
  • 罗湖中小网站建设广州市天河区建设和水务局网站