654123789sw 发表于 2014-1-24 16:13

【长期编译更新】Cataclysm-DDA和Cataclysm2(目前不可用)

本帖最后由 654123789sw 于 2014-1-27 11:45 编辑

Cataclysm2已经公布,其实是为以后编译Cataclysm2作准备的,不过
目前Cataclysm2的windows版本无法通过编译,似乎作者在修复中?


下载地址:http://pan.blacksheepgame.com/s/1dDzgdoP
备用:https://skydrive.live.com/redir? ... X4&ithint=folder%2c
本来想直接上传skydrive的,毕竟win8.1用这个很方便,最后放弃了,原因要感谢下伟大的墙
(上传了一个多小时了,没任何反应,一直显示挂起状态)

Cataclysm-DDA说明:
32位:
编译环境是:win8.1 64bit mingw32 msys (官方的是linux交叉编译)
优化参数是:-Os
LUA调试开启
Cataclysm-DDA整合了SDL版和字符版,共用data等文件夹的,应该可以通用
更新日志直接看fallrain君的就行:http://bbs.3dmgame.net/thread-3996513-1-1.html

64位:
编译环境是:win8.1 64bit mingw32 msys mingw64-g++
优化参数是:-Os
SDL虽然编译完成了,but it's not work,I don't know why
谁成功编译64bit的SDL版本的求指导
LUA调试未开启

Cataclysm2说明:
暂时无法通过编译


其他说明:
文件名字说明:
比如:Cataclysm-DDA_0.9-3588-ge7cd24d_01_24_i386.7z
0.9-3588-ge7cd24d是git的版本号,版本说明在下面
01_24是编译打包时间
i386是32位的意思


关于版本说明:
官方编译的版本是更新一次源代码编译一次CDDA,所以"版本号"是以编译次数决定的(比如653之类的),不过个人编译的没办法用这种方法确定版本号了,只能用源代码的版本号了
0.9-3588-ge7cd24d对应官方编译的版本是650



关于DLL问题:
SDL,SDL IMAGE,SDL TTF用的是VC的,所以会出现前面3个的DLL以及他们所依赖的DLL

关于LUA问题:
和官方一样,同样加入了LUA功能,不过关闭游戏没跳错现象(难道和官方是linux下交叉编译的有关?)

简体中文和繁体中文的汉化模板在哪下载?尝试做个"多国语言"版本看(这次模板用的是F君打包的CDDA里面的)
请教下哪位大神知道如何用Bazaar下载translations.launchpad.net上的翻译文件(po)
有神马意见和建议的欢迎提出:比如打包图形包神马的,默认设置神马的(只改了默认字体为宋体,其他都还是默认状态)

另外有人想自己编译有问题的也可以直接问我














654123789sw 发表于 2014-1-24 16:17

本帖最后由 654123789sw 于 2014-1-27 15:18 编辑

编译打包都是全自动的,不会太辛苦,只要等待就行。
bash脚本:
#/bin/bash

#auto build Cataclysm sh

export SOURCE_DIR=$HOME/source

#update source
git_update ()
{
      if [ -d "$SOURCE_DIR/$2" ];then
                cd "$SOURCE_DIR/$2"
                git pull
      else
                git clone "$1" "$SOURCE_DIR/$2"
                cd "$SOURCE_DIR/$2"
      fi
      export VERSION=`git describe`
      cd -
}

build_Cataclysm_DDA ()
{
      case "$1" in
      "32" )
                export CXXFLAGS="-Os -I$HOME/usr/include"
                export LDFLAGS="-s -L$HOME/usr/lib"
                export MAKE_PUBLIC_OPTION="NATIVE=win32 LUA=1 DEBUG= "
      ;;
      "64" )
                export PATH="/opt/windows_64/bin:$PATH"
                export CXXFLAGS="-Os -I/opt/windows_64/include"
                export LDFLAGS="-s -L/opt/windows_64/lib64"
                export MAKE_PUBLIC_OPTION="NATIVE=win32 DEBUG= "
      ;;
      * )
                return 1
      ;;
      esac
      if [ ! -d "$SOURCE_DIR/Cataclysm-DDA" ];then
                echo "dir $SOURCE_DIR/Cataclysm-DDA not exist"
                exit 1
      fi
      cd "$SOURCE_DIR/Cataclysm-DDA"
      make distclean
      make clean
      #ld error:premission denied ??????????????????
      export count=0;
      while true;do
                make $MAKE_PUBLIC_OPTION
                if [ $? == 0 ];then break;fi
                if [ $count == 5 ];then break;fi
                export count=`expr $count + 1`
      done
      export count=0;
      while true;do
                make $MAKE_PUBLIC_OPTION TILES=1
                if [ $? == 0 ];then break;fi
                if [ $count == 5 ];then break;fi
                export count=`expr $count + 1`
      done
      cd -
}

zip_Cataclysm_DDA ()
{
      if [ -d "$HOME/Cataclysm-DDA" ];then rm -rf "$HOME/Cataclysm-DDA";fi
      mkdir -p $HOME/Cataclysm-DDA
      if [ -f "$SOURCE_DIR/Cataclysm-DDA/cataclysm.exe" ] && [ -f "$SOURCE_DIR/Cataclysm-DDA/cataclysm-tiles.exe" ];then
                cp "$SOURCE_DIR/Cataclysm-DDA/cataclysm.exe" "$SOURCE_DIR/Cataclysm-DDA/cataclysm-tiles.exe" "$HOME/Cataclysm-DDA/"
      else
                exit 1
      fi
      cp -r "$SOURCE_DIR/Cataclysm-DDA/data" "$HOME/Cataclysm-DDA/"
      cp -r "$SOURCE_DIR/Cataclysm-DDA/gfx" "$HOME/Cataclysm-DDA/"
      cp -r "$SOURCE_DIR/Cataclysm-DDA/lua" "$HOME/Cataclysm-DDA/"
      cp -r $HOME/Cataclysm-DDA-add/public/* "$HOME/Cataclysm-DDA/"
      #sed -i "/s/Terminus/SimSun/g" "$HOME/Cataclysm-DDA/data/FONTDATA"
      cat > "$HOME/Cataclysm-DDA/data/FONTDATA" << EOF
SimSun
8
16
EOF
      case "$1" in
      "32" )
                cp -r $HOME/Cataclysm-DDA-add/i386/* "$HOME/Cataclysm-DDA/"
                export file_name=Cataclysm-DDA_${VERSION}_`date +%m_%d`_i386
                7z a -t7z -m0=lzma2 "$HOME/zip/${file_name}.7z" "$HOME/Cataclysm-DDA"
                mv -f "$HOME/zip/${file_name}.7z" "/c/Users/${USERNAME}/SkyDrive/Cataclysm/Cataclysm-DDA/i386/"
      ;;
      "64" )
                cp -r $HOME/Cataclysm-DDA-add/amd64/* "$HOME/Cataclysm-DDA/"
                export file_name=Cataclysm-DDA_${VERSION}_`date +%m_%d`_amd64
                7z a -t7z -m0=lzma2 "$HOME/zip/${file_name}.7z" "$HOME/Cataclysm-DDA"
                mv -f "$HOME/zip/${file_name}.7z" "/c/Users/${USERNAME}/SkyDrive/Cataclysm/Cataclysm-DDA/amd64/"
      ;;
      * )
                return 1
      ;;
      esac
}

build_Cataclysm2 ()
{
      #not work
      false
}

#update Cataclysm-DDA source
git_update "git://github.com/CleverRaven/Cataclysm-DDA" "Cataclysm-DDA"

#build & zip Cataclysm-DDA 32bit
build_Cataclysm_DDA 32
zip_Cataclysm_DDA 32

#build & zip Cataclysm-DDA 64bit
build_Cataclysm_DDA 64
zip_Cataclysm_DDA 64

#build_Cataclysm2
###

fuckmetu 发表于 2014-1-25 18:05

收藏学习

fuckmetu 发表于 2014-1-28 17:19

楼主2楼的代码如何使用?

654123789sw 发表于 2014-1-28 17:53

fuckmetu 发表于 2014-1-28 17:19 static/image/common/back.gif
楼主2楼的代码如何使用?

至少先要搭建好编译环境(mingw和msys)才能用
用法的话,复制下来,粘贴到文本里(最好UTF-8编码的),保存,然后将文件改为sh的后缀(没后缀也行),比如build.sh
然后用msys里的
bash build.sh
执行就行,或者直接
./build.sh
执行


bash脚本的概念和windows的bat差不多
另外2楼的脚本里稍微有点"个人"的代码
实际要用的时候要根据自己的实际情况改下,比如
export CXXFLAGS="-Os -I$HOME/usr/include
export LDFLAGS="-s -L$HOME/usr/lib"
SDL和libpng等一些库的文件我编译安装在$HOME/usr文件夹的,这里根据自己的实际情况改吧
另外
mv -f "$HOME/zip/${file_name}.7z" "/c/Users/${USERNAME}/SkyDrive/Cataclysm/Cataclysm-DDA/i386/
这行是将编译打包后的文件上传到SkyDrive里,没装SkyDrive的话把这行去掉
另外我的源代码放的目录是
export SOURCE_DIR=$HOME/source
这个也能自己换下

fuckmetu 发表于 2014-1-30 16:22

654123789sw 发表于 2014-1-28 17:53 static/image/common/back.gif
至少先要搭建好编译环境(mingw和msys)才能用
用法的话,复制下来,粘贴到文本里(最好UTF-8编码的),保 ...




anonymous variadic macros were introduced in C99"
匿名可变参数宏在 C99 中被引入"

啥意思啊?
是说我的编译器不支持C99?

654123789sw 发表于 2014-1-30 17:55

fuckmetu 发表于 2014-1-30 16:22 static/image/common/back.gif
anonymous variadic macros were introduced in C99"
匿名可变参数宏在 C99 中被引入"



warning罢了吧?在g++参数里加入-Wno-variadic-macros就没警告了
g++ --version
看下你g++版本看,g++4.8.1没这警告

fuckmetu 发表于 2014-1-30 22:05

654123789sw 发表于 2014-1-30 17:55 static/image/common/back.gif
warning罢了吧?在g++参数里加入-Wno-variadic-macros就没警告了
g++ --version
看下你g++版本看,g++4.8 ...

我是用CB编译的
之前用了汉化包
一直跳这个错误
这次一不小心开英文原版的了
就没事了。。。。

fuckmetu 发表于 2014-1-30 23:15

莫名其妙的卡在这里了
'IMG_Load' was not declared in this scope
我也加上#include "SDL_image.h"了
就是说未声明

654123789sw 发表于 2014-1-31 00:11

fuckmetu 发表于 2014-1-30 23:15 static/image/common/back.gif
莫名其妙的卡在这里了
'IMG_Load' was not declared in this scope
我也加上#include "SDL_image.h"了

IMG_Load是SDL IMAGE里的申明
1.你SDL IMAGE的include等“装”了吗?
2.如果编译字符版的话是不用SDL的,如果编译SDL版的话才需要
比如:cata_tiles.cpp:// SDL headers end up in different places depending on the OS, sadly
#if (defined SDLTILES)
#if (defined _WIN32 || defined WINDOWS)
#include "SDL_image.h" // Make sure to add this to the other OS inclusions
#elif (defined OSX_SDL_FW)
#include "SDL_image/SDL_image.h" // Make sure to add this to the other OS inclusions
#else
#include "SDL/SDL_image.h" // Make sure to add this to the other OS inclusions
#endif
#endif
这里虽然有 #include "SDL_image.h" ,不过这个是条件编译:#if (defined _WIN32 || defined WINDOWS)
mingw32的话只要运行: make NATIVE=win32 TILES=1
会自动根据Makefile里的规则,然后满足"#if (defined _WIN32 || defined WINDOWS)",然后会添加"#include "SDL_image.h" // Make sure to add this to the other OS inclusions"
CB的话没用过不了解。。。。。。。。

fuckmetu 发表于 2014-1-31 00:21

终于编译通过了
但是为什么运行EXE的时候提示缺少各种DLL?
编译模式是:Release -SDL -Localized

654123789sw 发表于 2014-1-31 00:36

本帖最后由 654123789sw 于 2014-1-31 00:38 编辑

fuckmetu 发表于 2014-1-31 00:21 static/image/common/back.gif
终于编译通过了
但是为什么运行EXE的时候提示缺少各种DLL?
编译模式是:Release -SDL -Localized ...
关于DLL问题:
SDL,SDL IMAGE,SDL TTF用的是VC的,所以会出现前面3个的DLL以及他们所依赖的DLL
官方的没DLL大概是官方的把SDL,SDL IMAGE,SDL TTF都用mingw重新编译了一遍吧= =#,我这边编译SDL IMAGE的时候失败了

这个我一开始有解释过= =#
我打包的CDDA里有现成的DLL
你可以直接拿来用的

fuckmetu 发表于 2014-2-1 10:20

654123789sw 发表于 2014-1-31 00:36 static/image/common/back.gif
官方的没DLL大概是官方的把SDL,SDL IMAGE,SDL TTF都用mingw重新编译了一遍吧= =#,我这边编译SDL IMAGE ...

哪怎样才能直接把DLL编译进exe内呢?

fuckmetu 发表于 2014-2-1 16:51


我编译出来的都有这样一个问题
字符下面都被切掉以行像素
这是为什么呢?

654123789sw 发表于 2014-2-2 22:40

fuckmetu 发表于 2014-2-1 16:51 static/image/common/back.gif
我编译出来的都有这样一个问题
字符下面都被切掉以行像素
这是为什么呢? ...

这个真心不知道
换其他字体不会,宋体会这样
不过官方编译的用宋体就不会,不知道为何
SDL_TTF的原因吗?
页: [1]
查看完整版本: 【长期编译更新】Cataclysm-DDA和Cataclysm2(目前不可用)