2016-06-26 172 views
2

我正在使用动态编译和加载的库。我为解决这个问题而创建的一个简单的解决方案就是创建一个我称之为编译所有内容的bash代码,但是我目前正致力于将它移植到Windows上,并且我不知道如何实现相同的结果。从代码内编译QT源代码

另外,这是一个QT应用程序,所以需要使用qmake而不是g ++。我执行

代码:(我总是与文件名的一个参数提供这个)

#! /bin/bash 

cd "${0%/*}"; 
if [ $# = 0 ]; then echo "Error: No Arguments Supplied"; exit 7; fi; 
if ! [ -a "$1.cc" ]; then echo "Error: Invalid Arguments Supplied"; exit 7; fi; 

rm -f "$1.so"; 

cp template.pro tmp.pro; 
echo "QT += widgets" >> tmp.pro; 
echo "SOURCES += $1.cc" >> tmp.pro; 
echo "CONFIG += c++11" >> tmp.pro; 

qmake -norecursive tmp.pro; 
make; 
mv libtmp.so.1.0.0 "$1.so"; 

rm -f Makefile tmp.pro *.o; 
find . -name 'libtmp.so*' -delete; 

回答

1

首先,你需要在Windows机器上安装的是bash。例如读取herehere(我相信还有很多其他来源,你可以阅读有关在Windows上执行bash脚本)

其次,很遗憾,您template.protmp.pro文件不会的Linux(或Unix)和Windows之间的兼容。代码中最明显的示例是libtmp.so - Windows库上将有不同的名称和扩展名.dll,但也会有其他差异。

你需要在你的.pro文件中使用条件:

# 
# Windows section: 
# 
win32 { 
# pro text for Windows here 
} 

# 
# Linux/Unix section 
# 
unix { 
# pro text for Linux/Unix here 
} 

# possible common part here 
+0

感谢您的.pro文件的建议。 我宁愿不必在机器上安装任何新东西,我正在试图使这种便携式 - 这是一个学校项目,他们告诉我们有点晚,它必须在Windows上运行。 – areuz

+0

我不确定你可以在所有“裸”的Windows和Linux机器上(即没有安装额外的软件)编写一个将“准备使用”的脚本。至少我不知道任何两种系统都支持的脚本语言“开箱即用”。我担心你需要编写你的小软件(可能使用Qt)并为Linux和Windows构建它 – mvidelgauz