我正在使用动态编译和加载的库。我的解决方案使我更容易对此进行更容易的问题,只是为了创建一个我称之为编译所有内容的bash代码,但是我目前正在努力将其移植到Windows,但我不确定如何实现相同的结果。p>另外,这是一个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;
首先,您需要在Windows机器上安装Bash。例如,在此处或这里阅读(我相信还有许多其他来源可以阅读有关在Windows上执行bash脚本的信息)
第二,不幸的是,您的template.pro
和tmp.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