学了很久,实在是学不会autoconfg和cmake的用法,一生气,手动写了一个固定的makefile(这个没有cmake,也没有./congigure),和一个install脚本。本机测试已经通过。make命令:
make
sudo make -e INSTDIR=<安装目录>
现在把整理以后的目录结构,makefile、install脚本列示出来,请懂这个的帮忙看看,特别是Arch用户。
另外,请Arch用户看看,这个Makefile能不能用于PKGBUILD,如果能,PKGBUILD怎么写?如果不能,怎么修改才能用于Arch?
另另外,请“贱兔”用户也看看,这个Makefile能不能用于“贱兔”
代码: 全选
.
├── bin (存放编译结果)
├── etc (配置文件目录)
├── share(共享文件)
│ ├── iconcache
│ ├── icons
│ ├── pics
│ └── weather-icon
├── shell(脚本)
├── src(源码)
└── xsessions(xsessions文件)
代码: 全选
TARGET = icon-de
INC0 = -lX11
INC1 = -lImlib2 -lXmu
INC2 = `pkg-config --cflags --libs glib-2.0`
CXX = g++
icon-wharf:./bin/icon-wharf
$(CXX) -o ./bin/icon-wharf ./src/icon-wharf.c $(INC0)
$(CXX) -o ./bin/iconrun1 ./src/iconrun1.c $(INC0) $(INC1) $(INC2)
$(CXX) -o ./bin/iconrun2 ./src/iconrun2.c $(INC0) $(INC1) $(INC2)
$(CXX) -o ./bin/iconrun3 ./src/iconrun3.c $(INC0) $(INC1) $(INC2)
$(CXX) -o ./bin/icon-bord ./src/icon-bord.c $(INC0) $(INC1) $(INC2)
$(CXX) -o ./bin/iconrun4 ./src/iconrun4.c $(INC0) $(INC1) $(INC2)
$(CXX) -o ./bin/icon-clock ./src/icon-clock.c $(INC0) $(INC1) $(INC2)
$(CXX) -o ./bin/icon-dock ./src/icon-dock.c $(INC0) $(INC1) $(INC2)
$(CXX) -o ./bin/icon-panel ./src/icon-panel.c $(INC0) $(INC2) -lXft
$(CXX) -o ./bin/iconweather ./src/iconweather.c $(INC0) $(INC1) $(INC2)
$(CXX) -o ./bin/icon-desk ./src/icon-desk.c -lXinerama -lXft -lX11 -lImlib2 -lXmu `pkg-config --cflags --libs glib-2.0` `giblib-config --cflags --libs` -lcurl -lpng -lXcomposite -lXdamage -lXfixes -lXrender -lm
$(CXX) -o ./bin/icon-trans ./src/icon-trans.c `pkg-config --cflags --libs xcomposite xfixes xdamage xrender glib-2.0`
$(CXX) -o ./bin/icon-wmvm ./src/icon-wmvm.c $(INC0) $(INC2)
$(CXX) -o ./bin/icon-wmcl ./src/icon-wmcl.c $(INC0) $(INC1) $(INC2)
clean:./bin/icon-wharf
-rm ./bin/*
INSTDIR = /home/lijianjun/icon_de_make/make
.PHONY: install
install:
./install $(shell pwd) $(INSTDIR)
.PHONY: uninstall
uninstall:
-rm -rf $(INSTDIR)/etc/icon-de/*
-rm -rf $(INSTDIR)/etc/icon-de
-rm -rf $(INSTDIR)/usr/share/icon-DE/*
-rm -rf $(INSTDIR)/usr/bin/bin/icon-bord
-rm -rf $(INSTDIR)/usr/bin/bin/icon-clock
-rm -rf $(INSTDIR)/usr/bin/bin/icon-desk
-rm -rf $(INSTDIR)/usr/bin/bin/icon-dock
-rm -rf $(INSTDIR)/usr/bin/bin/icon-panel
-rm -rf $(INSTDIR)/usr/bin/bin/icon-trans
-rm -rf $(INSTDIR)/usr/bin/bin/icon-wharf
-rm -rf $(INSTDIR)/usr/bin/bin/icon-wmcl
-rm -rf $(INSTDIR)/usr/bin/bin/icon-wmvm
-rm -rf $(INSTDIR)/usr/bin/bin/iconrun1
-rm -rf $(INSTDIR)/usr/bin/bin/iconrun2
-rm -rf $(INSTDIR)/usr/bin/bin/iconrun3
-rm -rf $(INSTDIR)/usr/bin/bin/iconrun4
-rm -rf $(INSTDIR)/usr/bin/bin/iconweather
-rm -rf $(INSTDIR)/usr/bin/shell/icon_de
-rm -rf $(INSTDIR)/usr/bin/shell/icon_de_init
-rm -rf $(INSTDIR)/usr/bin/shell/select_wm
-rm -f $(INSTDIR)/usr/share/xsessions/icon-DE.desktop
-rm -f /usr/share/kde4/apps/kdm/sessions/icon-DE.desktop
-rm -f /usr/share/apps/kdm/sessions/icon-DE.desktop
-rm -rf ~/.icon-DE/*
-rm -rf ~/.icon-DE
-rm -f ~/icon_de_install
-rm -f ~/icon_de_init_log.txt
#!/bin/bash
if [ ! -d "$2/usr/" ] ; then
mkdir $2/usr
fi
if [ ! -d "$2/usr/bin/" ] ; then
mkdir $2/usr/bin
fi
if [ ! -d "$2/usr/" ] ; then
mkdir $2/usr
fi
if [ ! -d "$2/usr/share/" ] ; then
mkdir $2/usr/share
fi
if [ ! -d "$2/usr/share/xsessions/" ] ; then
mkdir $2/usr/share/xsessions
fi
if [ ! -d "$2/usr/share/icon-DE/" ] ; then
mkdir $2/usr/share/icon-DE
fi
if [ ! -d "$2/usr/share/icon-DE/fonts/" ] ; then
mkdir $2/usr/share/icon-DE/fonts
fi
if [ ! -d "$2/usr/share/icon-DE/src/" ] ; then
mkdir $2/usr/share/icon-DE/src
fi
if [ ! -d "$2/etc/" ] ; then
mkdir $2/etc
fi
if [ ! -d "$2/etc/icon-de/" ] ; then
mkdir $2/etc/icon-de
fi
cp $1/bin/* $2/usr/bin/ -a
cp $1/shell/* $2/usr/bin/ -a
cp $1/xsessions/icon-DE.desktop $2/usr/share/xsessions
chown root $2/usr/share/xsessions/icon-DE.desktop
cp $1/etc/* $2/etc/icon-de/
cp -a $1/share/* $2/usr/share/icon-DE/ -rf
cp -a $1/src/* $2/usr/share/icon-DE/src/
if [ -f /usr/share/fonts/truetype/wqy/wqy-zenhei.ttc ] ; then
cp /usr/share/fonts/truetype/wqy/wqy-zenhei.ttc $2/usr/share/icon-DE/fonts/Vera.ttf
fi
if [ -f /usr/share/fonts/wenquanyi/wqy-zenhei/wqy-zenhei.ttc ] ; then
cp /usr/share/fonts/wenquanyi/wqy-zenhei/wqy-zenhei.ttc $2/usr/share/icon-DE/fonts/Vera.ttf
fi
if [ ! -f ~/.icon-DE/wharf.rc ] ; then
mkdir ~/.icon-DE
mkdir ~/.icon-DE/fonts
cp $2/usr/share/fonts/truetype/wqy/wqy-zenhei.ttc ~/.icon-DE/fonts/Vera.ttf
cp -a $2/usr/share/icon-DE/* ~/.icon-DE/
cp -a $2/etc/icon-de/* ~/.icon-DE/
chown `who am i| awk '{print $2}'`:`id \`who am i| awk '{print $2}'\` -grn` ~/.icon-DE
chown -R `who am i| awk '{print $2}'`:`id \`who am i| awk '{print $2}'\` -grn` ~/.icon-DE/*
fi
if [ -f ~/.icon-DE/weather-icon/晴.png ] ; then
rm -rf ~/.icon-DE/weather-icon/*.png
cp -a $2/usr/share/icon-DE//weather-icon/* ~/.icon-DE/weather-icon/
chown `who am i| awk '{print $2}'`:`id \`who am i| awk '{print $2}'\` -grn` ~/.icon-DE/weather-icon
chown -R `who am i| awk '{print $2}'`:`id \`who am i| awk '{print $2}'\` -grn` ~/.icon-DE/weather-icon/*
fi
if [ -e $2/usr/bin/kdm ] ; then
if [ -d /usr/share/kde4/apps/kdm/sessions/ ] ; then
cp $2/usr/share/xsessions/icon-DE.desktop /usr/share/kde4/apps/kdm/sessions/
fi
if [ -d /usr/share/apps/kdm/sessions/ ] ; then
cp $2/usr/share/xsessions/icon-DE.desktop /usr/share/apps/kdm/sessions/
fi
fi
if [ ! -f ~/.icon-DE/icon-de.rc ] ; then
cp -a $2/etc/icon-de/icon-de.rc ~/.icon-DE/icon-de.rc
chown `who am i| awk '{print $2}'`:`id \`who am i| awk '{print $2}'\` -grn` ~/.icon-DE
chown -R `who am i| awk '{print $2}'`:`id \`who am i| awk '{print $2}'\` -grn` ~/.icon-DE/*
fi
echo "Please Run Command: icon_de_init"
[/bash]
关键是makefile文件里面这一句:
代码: 全选
.PHONY: install
install:
./install $(shell pwd) $(INSTDIR)
这是所有的软件源码: