原文:https://www.zhihu.com/question/27455963 作者:玟清链接:https://www.zhihu.com/question/27455963/answer/36722992来源:知乎著作权归作者所有,转载请联系作者获得授权. 1. make 是用来执行Makefile的2. Makefile是类unix环境下(比如Linux)的类似于批处理的"脚本"文件.其基本语法是: 目标+依赖+命令,只有在目标文件不存在,或目标比依赖的文件更旧,命令才会被执…
Makefile中的%标记和系统通配符*的区别在于,*是应用在系统中的,%是应用在这个Makefile文件中的. (本文的测试环境是Windows7下使用MinGW提供的make.exe) 例如,如果你想编译一个文件夹下的所有.c文件,你可能会这样写: %.o:%.c gcc -o $@ $< 但是如果整个文件只有这两行的话,就会出现这样的错误: Make: *** target not found. stop. 要知道原因,我们先来看看另一个makefile的运行过程,例如有Makefile如…
通常我们在本地编译库(opecv.pcl)等我们喜欢使用make -jN  (N代表线程数)这样可以加速编译过程, 但是,这不一定是“线程安全”的,因为当某个线程在编译时,经常其他线程编译依赖本线程的结果,但是本线程编译 内容还没编译完全,导致报错.所以,使用多个线程编译时,我们通常使用“暴力编译法”,就是比如使用4个线程编译 make -j4  ,在编译进度30%时报错了,我们不清空之前的编译,而是继续make -j4 ,这时候就会发现前30%编译很快, 并且下次报错的地方和上次的不是同一个地…
如果指示符“include”指定的文件不是以斜线开始(绝对路径,如/usr/src/Makefile...),而且当前目录下也不存在此文件:make将根据文件名试图在以下几个目录下查找:首先,查找使用命令行选项“-I”或者“--include-dir”指定的目录,如果找到指定的文件,则使用这个文件:否则继续依此搜索以下几个目录(如果其存在):“/usr/gnu/include”.“/usr/local/include”和“/usr/include”. 当在这些目录下都没有找到“include”指…
写程序大体步骤为: 1.用编辑器编写源代码,如.c文件. 2.用编译器编译代码生成目标文件,如.o. 3.用链接器连接目标代码生成可执行文件,如.exe. 但如果源文件太多,一个一个编译时就会特别麻烦,于是人们想到,为什么不设计一种类似批处理的程序,来批处理编译源文件呢,于是就有了make工具,它是一个自动化编译工具,你可以使用一条命令实现完全编译.但是你需要编写一个规则文件,make依据它来批处理编译,这个文件就是makefile,所以编写makefile文件也是一个程序员所必备的技能. 对于…
0x是16进制的前缀,H是16进制的后缀 都是表示十六进制数,意义上没有什么区别,完全相等.至于什么时候用0x,什么时候用H,这取决于你在什么环境下使用,如果在C/C++,必须用0x来表示. 在C语言中是不能用H的. 摘自自百度知道.…
实际上他们两个可以达到一个目标(对于文件操作),但是又有本质上的区别,文档没有细看,但是一般利于项目的管理,使用install,install命令如果在cmake命令中没有指名install参数,实际上时不会执行的,只有在cmake命令中指名install,install命令(在CmakeLists.txt里)才会执行. Demo: cmake_minimum_required(VERSION 2.8) #set(CMAKE_C_COMPILER "D:\VS2008Release\VC\bin…
如果目标的头文件中包含了依赖的头文件(源文件间接包含),那么这里就是PUBLIC 如果目标仅源文件中包含了依赖的头文件,那么这里就是PRIVATE 如果目标的头文件包含依赖,但源文件未包含,那么这里就是INTERFACE https://cmake.org/cmake/help/v3.0/manual/cmake-buildsystem.7.html#transitive-usage-requirements…
前言 编译器的主要工作流程: 源码(Source Code)>> 预处理器(Preprocessor)>> 编译器(Compiler)>> 汇编程序(Assembler)>> 目标代码(Target Code)>> 链接器(Linker)>> 可执行程序(Executables) GCC,全称 GNU Compiler Collection,是 GNU 编译器套装,最开始编译 C 语言,后来可以处理 C++ 以及 Fortran, J…
很多时候,Qt构建项目编译的过程中会报错,大部分报错是因为qt的设置出现问题,很多时候环境配置时要选择合适的编译器,debugger调试器等,这里对一些名词解释,内容对新手很友好,大佬就不用看啦. MSVC:微软的VC编译器 (PC端开发)MingGW:跨平台开发.允许在GUN/Linux和Windows平台开发.MingGW需下载cmake自行编译.GUN:类Unix操作系统,属自由软件集.主要组件包括:GUN编译器集合,GUN C库,GUN文本编辑器等. make,makefile,cmak…
qmake的使用简介 下面是qmake的简单介绍和使用要领,更为详细的信息请参阅手册 qmake的介绍 手写Makefile是比较困难并且容易出错的,尤其是需要给不同的平台和编译器组合写几个Makefile.使用qmake,开发者创建一个简单的“项目”文件并且运行qmake生成适当的Makefile.qmake会注意所有的编译器和平台的依赖性,可以把开发者解放出来只关心他们的代码.Trolltech公司使用qmake作为Qt库和Qt所提供的工具的主要连编工具. qmake也注意了Qt的特殊需求,…
问题描述 利用toolchian.cmake设置好编译器后,利用make指令生成静态库,出现以下问题 Error running link command: No such file or directory 出错原因,toolchain.cmake文件内没有声明静态库生成器AR:解决方式,在toolchian.cmake文件内添加下面的声明 SET(CMAKE_AR $(TOOLCHAIN_DIR)/bin/arm-linux-gnueabihf-ar CACHE FILEPATH "Arch…
shadow build shadow build 是什么东西?就是将源码路径和构建路径分开(也就是生成的makefile文件和其他产物都不放到源码路径),以此来保证源码路径的清洁. 这不是qmake独创的东西,cmake中早就使用这个东西了   cmake qmake 备注 in-source cmake . qmake project.pro 在源码路径下执行 out-of-source(shadow-build) mkdir build cd buildcmake ../project m…
shadow build shadow build 是什么东西?就是将源码路径和构建路径分开(也就是生成的makefile文件和其他产物都不放到源码路径),以此来保证源码路径的清洁. 这不是qmake独创的东西,cmake中早就使用这个东西了   cmake qmake 备注 in-source cmake . qmake project.pro 在源码路径下执行 out-of-source (shadow-build) mkdir build cd build cmake ../project…
学习cmake http://xwz.me/wiki/doku.php?id=cmake 碰到的一些问题: 1.You have changed variables that require your cache to be deleted死循环 解决方法:CMakeList.txt中include包含的子模板含有环境变量传入的标示且存在ADD_SUBDIRECTORY子目录控制,此时需要将子模板放置在CMakeList.txt的头部中 CMAKE的使用 http://blog.csdn.net…
翻译qmake文档 目录   原英文文档:http://qt-project.org/doc/qt-5/qmake-project-files.html   创建项目文件 项目文件包含qmake构建你的应用程序,库文件,或插件需要的所有信息.通常,你会在项目文件里使用一系列的声明指定资源,但是对简单程序构造的支持,允许你为不同的平台或环境描述不同的构建过程. 项目文件元素      qmake使用的项目文件格式可以支持简单和复杂的构建系统使用.简的项目文件使用简单的声明样式,定义标准的变量,用于…
[TOC] 本文由乌合之众 lym瞎编,欢迎转载 blog.cnblogs.net/oloroso 本文由乌合之众 lym瞎编,欢迎转载 my.oschina.net/oloroso *** 还是先说一下当前的系统环境:Ubuntu 14.04 + Qt5.4 如果没有安装过QT,可以安装下面几个qt软件 sudo apt-get install qt5-default qt5-doc-html qt5-qmake qt5-doc qt5-image-formats-plugins 这只是对qm…
本文由乌合之众 lym瞎编,欢迎转载 my.oschina.net/oloroso***还是先说一下当前的系统环境:Ubuntu 14.04 + Qt5.4如果没有安装过QT,可以安装下面几个qt软件 sudo apt-get install qt5-default qt5-doc-html qt5-qmake qt5-doc qt5-image-formats-plugins 这只是对qmake使用的一个说明而已.如果一直使用Qt Create来构建工程,很容易让人以为Qt项目必须使用Qt C…
关于qmake,好一段时间令我一头雾水,不知道用来干嘛的,只知道怎么用,而且也只懂那么一两个命令,详细看过资料以后整理如下: 1.首先,感性的认识是,qmake可以利用源文件(包括头文件h,实现文件cpp,qt的ui文件等等)生成各种不同类型的工程,工程需要的Makefile文件,可执行的与不可执行的,这取决于所用的模板(包括app.lib.subdirs.vcapp.vclib). 2.创建pro文件,添加各种源文件,还可以设定平台相关的不同源文件,设置各种规则,利用qmake命令生成工程.后…
关于qmake,好一段时间令我一头雾水,不知道用来干嘛的,只知道怎么用,而且也只懂那么一两个命令,详细看过资料以后整理如下: 1.首先,感性的认识是,qmake可以利用源文件(包括头文件h,实现文件cpp,qt的ui文件等等)生成各种不同类型的工程,工程需要的Makefile文件,可执行的与不可执行的,这取决于所用的模板(包括app.lib.subdirs.vcapp.vclib). 2.创建pro文件,添加各种源文件,还可以设定平台相关的不同源文件,设置各种规则,利用qmake命令生成工程.后…
CMake入门(二) 最后更新日期:2014-04-25 by kagula 阅读前提:<CMake入门(一)>.Linux的基本操作 环境: Windows 8.1 64bit英文版.Visual Studio 203 Update1英文版.CMake 2.8.12.2. Cent OS 6.5. 内容简单介绍 介绍在VisualStudio上现有的项目怎样移植到Linux上.本文通过列出两个最简单.也是最经常使用的样例来介绍Linux下CMake的使用. CentOS 上安装CMake 2…
本文由云+社区发表 作者:工程师小熊 CMake编译原理 CMake是一种跨平台编译工具,比make更为高级,使用起来要方便得多.CMake主要是编写CMakeLists.txt文件,然后用cmake命令将CMakeLists.txt文件转化为make所需要的makefile文件,最后用make命令编译源码生成可执行程序或共享库(so(shared object)).因此CMake的编译基本就两个步骤: cmake make compile.sh g++ -rdynamic ../include…
1.CMake编译原理 CMake是一种跨平台编译工具,比make更为高级,使用起来要方便得多.CMake主要是编写CMakeLists.txt文件,然后用cmake命令将CMakeLists.txt文件转化为make所需要的makefile文件,最后用make命令编译源码生成可执行程序或共享库(so(shared object)).因此CMake的编译基本就两个步骤: 1. cmake 2. make cmake  指向CMakeLists.txt所在的目录,例如cmake .. 表示CMak…
目录 cmake使用笔记 基本使用方法 相较于makefile的优点 常用语法 cmake_minimum_required project PROJECT_SOURCE_DIR set include_directories link_directories 常用变量 CMAKE_CURRENT_LIST_DIR CMAKE_ARCHIVE_OUTPUT_DIRECTORY CMAKE_LIBRARY_OUTPUT_DIRECTORY CMAKE_RUNTIME_OUTPUT_DIRECTOR…
http://www.cnblogs.com/lyq105/archive/2010/12/03/1895067.html http://www.linuxidc.com/Linux/2015-10/124447.htm CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程).他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake.只是 CMake 的组态档取名为 CmakeLists.tx…
今天给大家讲解一下Cmake如何编译Qt程序. 这里说的Qt程序不只是用QtCreator写出来的程序,当然也可以是文本编辑器….这里说的Qt程序是指,QCoreApplication,QApplication( QMainWindow,QWidget,QDialogue)类型的程序. CMake是一个跨平台的非常通用的于编译器,用cmake命令可以生产出makefile,在利用make编译程序,这里不多说了,大家比较了解.当然首先得有CMakeLists.txt,我们手动建立一个.txt文件或…
1.CMake编译原理 CMake是一种跨平台编译工具,比make更为高级,使用起来要方便得多.CMake主要是编写CMakeLists.txt文件,然后用cmake命令将CMakeLists.txt文件转化为make所需要的makefile文件,最后用make命令编译源码生成可执行程序或共享库(so(shared object)).因此CMake的编译基本就两个步骤: 1. cmake 2. make cmake  指向CMakeLists.txt所在的目录,例如cmake .. 表示CMak…
学计算机的,在写代码的时候,IDE安装好,环境按着教程配置好,就直接代码了,编辑器的具体原理只是一知半解,现在来系统学习一下,为了方便以后学习HElib! make和cmake 写程序大体步骤为: 1.用编辑器编写源代码,如.c文件. 2.用编译器编译代码生成目标文件,如.o. 3.用链接器连接目标代码生成可执行文件,如.exe. gcc gcc是GNU Compiler Collection(就是GNU编译器套件),也可以简单认为是编译器,它可以编译很多种编程语言(括C.C++.Objecti…
--译自Linux3.9.5 Kernel Makefiles(内核目录documention/kbuild/makefiles.txt) kbuild(kernel build) 内核编译器 This document describes the Linux kernel Makefiles 本文档介绍了Linux内核的Makefile === Table of Contents === 目录 === 1 Overview === 1 概述 === 2 Who does what === 2…
https://www.cygwin.com/ apt-get for cygwin? wget rawgit.com/transcode-open/apt-cyg/master/apt-cyg install apt-cyg /binNow that apt-cyg is installed. Here are few examples of installing some packages: apt-cyg install nano apt-cyg install git apt-cyg i…