Posts

转:《你和你的研究》

18 Apr 2016

本文摘自阮一峰的网络日志: 理查德·汉明《你和你的研究》

你和你的研究(精简版)

You and Your Research 作者:理查德·汉明(Richard Hamming) 译者:未知 时间:1986年3月7日 我演讲的题目是”你和你的研究”。我要谈的不是普通的研究,而是重大的研究,就是相当诺贝尔奖那一级别的研究。比如,相对论,香农的信息论,以及其他杰出的理论—-这就是我要讲的。 1945年,我进入洛斯阿拉莫斯国家实验室,负责计算机方面的事,因此见过费曼、费米、奥本海默等大科学家。我一直问自己这样的问题: “为什么他们做出了这样的成果?”和”我和他们的差别是什么” 。我读了传记、自传,去问他们本人:”你是怎么干起来这样的事的?” 我试着搞清原因,这就是今天要谈的内容。 为什么这个话题重要?因为你只有一次生命。即使你相信来世,那也没关系,为什么不在今生就做一些重大的事呢。 ...

阅读全文 ...


【使用CMake组织C++工程】3:CMake 函数和宏

11 Apr 2016

前言

这篇文章分享一下CMake中函数:function, 和宏:macro的使用。本文先从二者区别说起,由于二者区别很小,所以后文就仅对函数的用法进行讨论,因为函数有作用域的概念,适用范围更广。后文分享一个很实用的递归函数用于包含指定目录的所有子目录。

CMake中function和macro的区别

从其官方文档的描述并不会看出二者有什么大的区别,除了在function的定义中提到了Scope的概念。 下面以StackOverflow上的一个例子来直观的了解一下二者的区别:
set(var "ABC")

macro(Moo arg)
  message("arg = ${arg}")
  set(arg "abc")
  message("# After change the value of arg.")
  message("arg = ${arg}")
endmacro()
message("=== Call macro ===")
Moo(${var})

function(Foo arg)
  message("arg = ${arg}")
  set(arg "abc")
  message("# After change the value of arg.")
  message("arg = ${arg}")
endfunction()
message("=== Call function ===")
Foo(${var})
输出结果是: ...

阅读全文 ...


【使用CMake组织C++工程】2:CMake 常用命令和变量

10 Apr 2016

前言

前面的文章介绍了一个最简单的CMake工程,这篇文章将介绍一个稍微复杂一些的CMake工程,结合这个工程总结一下在组织一个C/C++工程时最为常用的一些CMake命令和变量。对于涉及到的命令和变量,介绍的原则是点到即止,先仅需掌握基本用法即可,让工程跑起来。 上一篇文章中那个最简单的CMake Hello World工程,在其CMake脚本文件CMakeLists.txt中,仅有一句话:
add_executable(hello hello.cpp)
这里面的add_executable就是一个CMake命令,它的作用是添加一个可执行文件构建目标。 下面从一个C++应用程序的编译过程为脉络对涉及到的命令和变量进行说明。 ...

阅读全文 ...


【使用CMake组织C++工程】-1:CMake 常见错误记录

08 Apr 2016

前言

本文记录CMake使用中需要注意的问题。 ...

阅读全文 ...


【使用CMake组织C++工程】1:CMake Hello World

05 Apr 2016

前言

本文介绍了如何使用CMake来构建一个Hello World的C++工程. ...

阅读全文 ...