Qt qmake 更改构建目录路径
Qt qmake change build directory path
如何在我的项目中包含外部库并将构建保留在项目内部?
例如:
myproject.pro
TEMPLATE = subdirs
SUBDIRS += \
../../libs/lib1 \
../../libs/lib2 \
app
这导致构建结构如下:
build/
├─ myproject/
│ ├─ kit1/
│ │ ├─ app/
│ ├─ kit2/
│ │ ├─ app/
│ ├─ libs/
│ │ ├─ lib1/
│ │ ├─ lib2/
因此,这会导致不兼容的链接。
我想要的构建结构是这样的:
build/
├─ myproject/
│ ├─ kit1/
│ │ ├─ libs/
│ │ │ ├─ lib1/
│ │ │ ├─ lib2/
│ │ ├─ app/
│ ├─ kit2/
│ │ ├─ libs/
│ │ │ ├─ lib1/
│ │ │ ├─ lib2/
│ │ ├─ app/
你应该告诉 qmake 应用程序依赖于 lib1 和 lib2。像这样重写 qmake 项目文件:
TEMPLATE = subdirs
SUBDIRS = \
lib1 \ # sub-project names
lib2 \
app
lib1.subdir = ../../libs/lib1
lib2.subdir = ../../libs/lib2
app.subdir = app
app.depends = lib1 lib2
您也可以尝试通过添加
强制 qmake 在编译期间保持顺序
CONFIG += ordered
到您的原始项目文件。
[编辑]
我想您正在使用 QtCreator 来构建项目,因此定义了 $$OUT_PWD
变量。
您可以将已编译的库复制到所需的目标位置。输入你的 app.pro 这样的东西:
TEMPLATE = app
INCLUDEPATH += \
../../../libs/lib1 \
../../../libs/lib2
SOURCES += <list of sources>
LIBS += \
-L$$OUT_PWD/../libs/lib1 -llib1 \
-L$$OUT_PWD/../libs/lib2 -llib2
QMAKE_PRE_LINK += $(MKDIR) $$OUT_PWD/../libs/lib1; cp -d ../../../libs/lib1/*so* $$OUT_PWD/../libs/lib1;
QMAKE_PRE_LINK += $(MKDIR) $$OUT_PWD/../libs/lib2; cp -d ../../../libs/lib2/*so* $$OUT_PWD/../libs/lib2/
如何在我的项目中包含外部库并将构建保留在项目内部? 例如:
myproject.pro
TEMPLATE = subdirs
SUBDIRS += \
../../libs/lib1 \
../../libs/lib2 \
app
这导致构建结构如下:
build/
├─ myproject/
│ ├─ kit1/
│ │ ├─ app/
│ ├─ kit2/
│ │ ├─ app/
│ ├─ libs/
│ │ ├─ lib1/
│ │ ├─ lib2/
因此,这会导致不兼容的链接。 我想要的构建结构是这样的:
build/
├─ myproject/
│ ├─ kit1/
│ │ ├─ libs/
│ │ │ ├─ lib1/
│ │ │ ├─ lib2/
│ │ ├─ app/
│ ├─ kit2/
│ │ ├─ libs/
│ │ │ ├─ lib1/
│ │ │ ├─ lib2/
│ │ ├─ app/
你应该告诉 qmake 应用程序依赖于 lib1 和 lib2。像这样重写 qmake 项目文件:
TEMPLATE = subdirs
SUBDIRS = \
lib1 \ # sub-project names
lib2 \
app
lib1.subdir = ../../libs/lib1
lib2.subdir = ../../libs/lib2
app.subdir = app
app.depends = lib1 lib2
您也可以尝试通过添加
强制 qmake 在编译期间保持顺序 CONFIG += ordered
到您的原始项目文件。
[编辑]
我想您正在使用 QtCreator 来构建项目,因此定义了 $$OUT_PWD
变量。
您可以将已编译的库复制到所需的目标位置。输入你的 app.pro 这样的东西:
TEMPLATE = app
INCLUDEPATH += \
../../../libs/lib1 \
../../../libs/lib2
SOURCES += <list of sources>
LIBS += \
-L$$OUT_PWD/../libs/lib1 -llib1 \
-L$$OUT_PWD/../libs/lib2 -llib2
QMAKE_PRE_LINK += $(MKDIR) $$OUT_PWD/../libs/lib1; cp -d ../../../libs/lib1/*so* $$OUT_PWD/../libs/lib1;
QMAKE_PRE_LINK += $(MKDIR) $$OUT_PWD/../libs/lib2; cp -d ../../../libs/lib2/*so* $$OUT_PWD/../libs/lib2/