Slax中关于KDE程序编译脚本的注意事项

Slax是个非常优秀的Linux发行版,之前说过了,也介绍过制作Slax Bundle的buildscript书写。

但是我今天在编译rekonq的时候遇到了点麻烦,一直提示出错,跑到IRC上#rekonq频道询问,人家告诉我是少了ksgmltools2,确实少了。我发邮件告诉Tomas M(Slax作者),这位仁兄告诉我Slax是特意去除这个组件的,并告诉我要在buildscript里对CMakeLists.txt打一下“补丁”,让程序编译过程去除掉Documentation(文档),这么一来我的rekonq终于编译成功了!

去除文档的办法,是删掉CMakeLists.txt中的ADD_SUBDIRECTORY( doc ),当然我知道可以用文本编辑器去删掉,问题是您要写的是一个脚本在服务器上运行的,所以要用到一些简单的shell脚本来操作,相关行我贴在这里。

cd ${SLAX_BUNDLE_NAME}-${SLAX_BUNDLE_VERSION}

find | grep CMakeLists.txt | while read LINE; do
cat "$LINE" | fgrep -v "add_subdirectory( doc )" 
| fgrep -v "add_subdirectory(doc)" 
| fgrep -v "add_subdirectory (doc)" 
| fgrep -v "add_subdirectory ( doc )" 
| fgrep -v "ADD_SUBDIRECTORY( doc )" >aaa
mv aaa "$LINE"
done

另外一个需要注意的事情,就是对于cmake编译安装的软件,需要在cmake参数里加上 -DLIB_SUFFIX=”${SLAX_64_FLAG}” ,不然在64位系统中也会把libraries安装到/usr/lib而不是/usr/lib64,程序无法找到lib的情况。所以这点千万切记要加上这个参数。

2013/02/06补充:(根据Michal发给我的邮件正文,下面详细贴出buildscript软件编译部分的正确示例)

1) 当使用./configure时,

CFLAGS="${SLAX_CFLAGS}" CXXFLAGS="${SLAX_CFLAGS}" ./configure ${SLAX_CONFIGURE_OPTIONS}

2) 当使用cmake时(假定先执行了mkdir build && cd build了),

cmake -DCMAKE_C_FLAGS:STRING="${SLAX_CFLAGS}" 
 -DCMAKE_CXX_FLAGS:STRING="${SLAX_CFLAGS}" 
 -DCMAKE_INSTALL_PREFIX=/usr 
 -DINCLUDE_INSTALL_DIR=/usr/include 
 -DCMAKE_BUILD_TYPE=Release 
 -DLIB_SUFFIX=${SLAX_64_FLAG} 
 -DLIB_INSTALL_DIR="${SLAX_LIBDIR}" 
 ..

3) 当制作商业闭源软件的Bundle时,必须准备好32位和64位两份预编译包。

if [ "${SLAX_64_FLAG}" = "64" ]; then
 #将64位预编译文件安装到 ${SLAX_BUNDLE_TARGET}
 else
 # 将32位预编译文件安装到 ${SLAX_BUNDLE_TARGET}
 fi

如此才能确保服务器根据buildscript编译出来的Slax Bundle正确。