Easymake
最简单的Makefile,但是还是大程序少不了makefile工具
#CC=arm-linux-gnueabihf-
CC=
target:
$(CC)gcc -o algo_main algo_main.c cJSON.c -lm
clean:
@rm -rf algo_main
一、Easymake太好用了,偷懒神器,强力推荐.
1、根目录下的easymake.mk就是makefile模板,我们自定义的makefile只需要包含这个模板即可
include ../../easymake.mk
2、源码包自带的sample够我们参考应用了。
drwx------ 9月 : basics
drwx------ 9月 : so
drwx------ 9月 : staticLib
drwx------ 9月 : vpath
1) basics常规应用,包含一个shell脚本,也就是copy一份makefile文件
cp ../../easymake.mk Makefile
运行实例
dong@ubuntu:~/cb/easymake-master/samples/basics$ ./test.sh
cp ../../easymake.mk Makefile make
g++ -MP -MMD -c -o bin/math/add.o math/add.cpp
g++ -MP -MMD -c -o bin/add.o add.cpp
# main detected
g++ -o bin/add bin/math/add.o bin/add.o ./bin/add
add(,) returns create add_test.cpp make test
g++ -MP -MMD -c -o bin/add_test.o add_test.cpp
# main detected
g++ -o bin/add_test bin/math/add.o bin/add_test.o # run [bin/add_test]
# add_test: add_test.cpp:: int main(): Assertion `add(,)==' failed.
Makefile:: recipe for target 'test' failed
make: *** [test] Error
2)so生成库文件并且运行,用shell脚本来编译
make bin/libmylib.so g++ add_test.cpp -I. -L./bin/ -lmylib -o bin/target LD_LIBRARY_PATH=./bin/ ./bin/target
运行实例
dong@ubuntu:~/cb/easymake-master/samples/so$ ./so_test.sh
g++ -I. -fPIC -MP -MMD -c -o bin/math/add.o math/add.cpp
g++ -I. -fPIC -MP -MMD -c -o bin/add_test.o add_test.cpp
# main detected g++ -shared -o bin/libmylib.so bin/math/add.o
add(,)=
3)staticLib生成静态库,就不一一编译运行了,同上
4)vpath这个实例可以同时编译多个可运行项目,makefile只需要添加自定义的项目源码路径就行了
VPATH = ../src2 include ../../../easymake.mk
运行实例
dong@ubuntu:~/cb/easymake-master/samples/vpath/proj$ make
g++ -MP -MMD -c -o bin/math/add.o math/add.cpp
g++ -MP -MMD -c -o bin/main.o main.cpp
# main detected
g++ -MP -MMD -c -o bin/hello_world.o ../src2/hello_world.cpp
g++ -MP -MMD -c -o bin/test.o ../src2/test.cpp
# main detected
g++ -o bin/main bin/math/add.o bin/main.o bin/hello_world.o
g++ -o bin/test bin/math/add.o bin/hello_world.o bin/test.o
3、Easymake源码在这里下载
二、还有一堆cmake xmake nmake ...
CMake 入门实战
http://www.hahack.com/codes/cmake/
cmake升级
https://blog.csdn.net/learning_tortosie/article/details/80593956
wget https://cmake.org/files/v3.9/cmake-3.9.2.tar.gz
tar -xvf cmake-3.9.2.tar.gz
cd cmake-3.9.2
./configure
make
sudo make install
三、指定安装目录
一种是在./configure的时候指定路径
./configure --prefix=$(pwd)/_install
一种是make install的时候指定路径
make DESTDIR=$(pwd)/_install install
sudo pip2 install numpy --target=/usr/local/lib/python2.7/site-packages
四、gcc/g++升级和降级
由于在matlab中要使用mex,需要将原本的gcc '5.4.0' 版本降级(替换)为MEX支持的版本: '4.9.x'。
1.加入源,方便更新。
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
2.更新
sudo apt-get update
3.安装
sudo apt-get install gcc-4.9
sudo apt-get install g++-4.9
4.更新
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 20
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 20
5.成功验证:
gcc --version
成功标志:
g++ (Ubuntu 4.9.4-2ubuntu1~16.04) 4.9.4
gcc --version
成功标志:
gcc (Ubuntu 4.9.4-2ubuntu1~16.04) 4.9.4
原文链接:https://blog.csdn.net/Pancheng1/article/details/83058833
cmake交叉编译
https://blog.csdn.net/qq_24011271/article/details/82498500
Easymake的更多相关文章
- 通用的 makefile 小工具分享 - Easymake 使用说明
Easymake 使用说明 介绍 Easymake 是一个在linux系统中 C/C++ 开发的通用 makefile.在一个简单的 C/C++ 程序中使用 easymake,你甚至可以不写一行 ma ...
- easymake cmake xmake nmake ...
最简单的Makefile,但是还是大程序少不了makefile工具 #CC=arm-linux-gnueabihf-CC=target: $(CC)gcc -o algo_main algo_m ...
- 工程管理之makefile与自动创建makefile文件过程
(风雪之隅 http://www.laruence.com/2009/11/18/1154.html) Linux Makefile自动编译和链接使用的环境 想知道到Linux Makefile系统的 ...
- project管理之makefile与自己主动创建makefile文件过程
(风雪之隅 http://www.laruence.com/2009/11/18/1154.html) Linux Makefile自己主动编译和链接使用的环境 想知道到Linux Makefile系 ...
随机推荐
- sql server: sql script
select ProductGUID,ProductName,ProjectGUID from dbo.Product /* F637A079-E22B-4E50-87E9-000147B1B1F4 ...
- 【Linux学习】如何了解一个陌生的命令?
如何了解一个陌生的命令? 有一些命令可以用来了解某个命令本身的情况,比如这个命令的绝对路径. $which ls which 在默认路径中搜索命令,返回该命令的绝对路径. $whereis ls wh ...
- [已解决]从微软合作伙伴资源和MSDN下载系统和软件Microsoft download Manager无效
有个itellyou,更新了所有MSDN的软件包.如果自己有微软的注册账户,还是从微软官网下载比较好.而且对自己账户里的系统和itellyou里的做了对比.发现SHA1码不相同,估计官方分配的序列号也 ...
- 使用 python 获取 Linux 的 IP 信息(通过 ifconfig 命令)
我们可以使用 python 代码通过调用 ifconfig 命令来获取 Linux 主机的 IP 相关信息,包括:网卡名称.MAC地址.IP地址等. 第一种实现方式: #!/usr/bin/pytho ...
- WPF 3D 知识点大全以及实例
引言 现在物联网概念这么火,如果监控的信息能够实时在手机的客服端中以3D形式展示给我们,那种体验大家可以发挥自己的想象. 那生活中我们还有很多地方用到这些,如上图所示的Kinect 在医疗上的应用,当 ...
- java读取excel文件
package com.execl; import java.io.File; import java.io.FileInputStream; import java.io.IOException; ...
-  非法字符 原因 以及解决办法
模板文件生成html文件之后会在body开头处加入一个可见的控制符 // 如果是Windows系统,修改为:$WIN = 1; $WIN = 0; ?> <!DOCTYPE html P ...
- C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 区域管理功能增强(电子商务方向)
由于公司是面向全国服务的.全国各地都有分公司,需要管理到覆盖全国的各种业务,各种业务系统信息系统的数据都需要规范化. 公司开展网络订单功能,在全国范围内实现网络下单.提高工作效率,提高各公司之间的数据 ...
- XML中输入特殊符号
XML中输入特殊符号 周银辉 特殊符号比如 ™, 要在xml中使用的话, 其实和html的转码是一样的, 参考下面这个表(使用十进制编码那一列) 特殊符号 命名实体 十进制编码 特殊符号 命名实体 十 ...
- jqgrid
官方主页 http://www.jqgrid.com/目前最新版本:jqGrid 3.7 Beta在线文档: http://www.secondpersonplural.ca/jqgriddocs/i ...