1、项目树工程
2、项目树列表
---- BuildAll
-------- App (exe)
-------- Database (dll)
注:使用 子项目-->添加库-->内部库 的方式
3、qmake 内置的变量
cpp
$$OUT_PWD 表示输出文件(如可执行文件、库文件等)的目录路径。
$$PWD:表示当前项目文件的目录路径。
$$TARGET:表示生成的目标文件的名称(不包括扩展名)。
$$TARGET_EXT:表示生成的目标文件的扩展名。例如,在 Windows 上,它可能为 .exe。
$$DESTDIR:表示安装目标文件时的根目录路径。默认情况下,它为空字符串,表示将目标文件安装在系统默认位置。
$$INCLUDEPATH:表示包含头文件的目录路径列表。
$$LIBS:表示要链接到目标文件中的库文件列表。
$$QMAKE_CFLAGS:表示 C 编译器选项。
$$QMAKE_CXXFLAGS:表示 C++ 编译器选项。
$$QMAKE_LFLAGS:表示链接器选项。
4、在 App 子项目的 .pro 文件下输入代码
在 App 子项目下拷贝 Database 子项目中的Database.dll文件
cpp
#####################################################################################################
########## 功能:项目树工程,将子项目库文件(dll、lib)拷贝到子项目(exe)的运行路径下 ##########
## 注意: 在 Windows 下,路径分隔符是反斜杠 \,而不是正斜杠 /; 在非 Windows 下,可以直接用正斜杠 / ##
PROJECT_OUT_PWD = ""
win32 {
# windows 下,将路径分隔符从 / 替换为 \
PROJECT_OUT_PWD = $$replace(OUT_PWD, "/", "\\")
} else:unix {
# unix 下,不用转换
PROJECT_OUT_PWD = $$OUT_PWD
}
# 先定义变量
DEBUG_SOURCE_DLL_PATH = ""
RELEASE_SOURCE_DLL_PATH = ""
DEBUG_DEST_EXE_PATH = ""
RELEASE_DEST_EXE_PATH = ""
# 根据需要再对其赋值
win32 {
DEBUG_SOURCE_DLL_PATH = $$PROJECT_OUT_PWD\..\Database\debug\Database.dll
RELEASE_SOURCE_DLL_PATH = $$PROJECT_OUT_PWD\..\Database\release\Database.dll
# 定义目标路径
DEBUG_DEST_EXE_PATH = $$PROJECT_OUT_PWD\debug
RELEASE_DEST_EXE_PATH = $$PROJECT_OUT_PWD\release
} else:unix {
DEBUG_SOURCE_DLL_PATH = $$PROJECT_OUT_PWD/../Database/debug/Database.so
RELEASE_SOURCE_DLL_PATH = $$PROJECT_OUT_PWD/../Database/release/Database.so
# 定义目标路径
DEBUG_DEST_EXE_PATH = $$PROJECT_OUT_PWD/debug
RELEASE_DEST_EXE_PATH = $$PROJECT_OUT_PWD/release
}
# 根据构建模式选择复制命令
win32 {
CONFIG(debug, debug|release) {
# Debug 模式下的复制命令
QMAKE_POST_LINK += copy /Y $$quote($$DEBUG_SOURCE_DLL_PATH) $$quote($$DEBUG_DEST_EXE_PATH)
} else {
# Release 模式下的复制命令
QMAKE_POST_LINK += copy /Y $$quote($$RELEASE_SOURCE_DLL_PATH) $$quote($$RELEASE_DEST_EXE_PATH)
}
} else {
CONFIG(debug, debug|release) {
# Debug 模式下的复制命令 (Unix-like 系统)
QMAKE_POST_LINK += cp -f $$quote($$DEBUG_SOURCE_DLL_PATH) $$quote($$DEBUG_DEST_EXE_PATH)
} else {
# Release 模式下的复制命令 (Unix-like 系统)
QMAKE_POST_LINK += cp -f $$quote($$RELEASE_SOURCE_DLL_PATH) $$quote($$RELEASE_DEST_EXE_PATH)
}
}
#####################################################################################################
5、在 Database 子项目的 .pro 文件下输入代码
将 Database 子项目中的 Database.dll 文件拷贝到子项目App
cpp
#####################################################################################################
############ 功能:项目树工程,将子项目库文件(dll、lib)拷贝到子项目(exe)的运行路径下 ############
##注意: 在 Windows 下,路径分隔符是反斜杠 \,而不是正斜杠 /; 在非 Windows 下,可以直接用正斜杠 / ##
# 一般情况下,修改这两个工程名即可
# 源工程名
SOURCE_PROJECT_NAME = Database
# 目标工程名
TARGET_PROJECT_NAME = App
PROJECT_OUT_PWD = ""
win32 {
# windows 下,将路径分隔符从 / 替换为 \\
PROJECT_OUT_PWD = $$replace(OUT_PWD, "/", "\\\\")
} else:unix {
# unix 下,不用转换
PROJECT_OUT_PWD = $$OUT_PWD
}
# 先定义变量
DEBUG_SOURCE_PATH = ""
RELEASE_SOURCE_PATH = ""
DEBUG_TARGET_PATH = ""
RELEASE_TARGET_PATH = ""
# 根据需要再对其赋值
win32 {
# 源文件路径
DEBUG_SOURCE_PATH = $$PROJECT_OUT_PWD\\debug\\$$SOURCE_PROJECT_NAME.dll
RELEASE_SOURCE_PATH = $$PROJECT_OUT_PWD\\release\\$$SOURCE_PROJECT_NAME.dll
# 目标路径
DEBUG_TARGET_PATH = $$PROJECT_OUT_PWD\\..\\$$TARGET_PROJECT_NAME\\debug
RELEASE_TARGET_PATH = $$PROJECT_OUT_PWD\\..\\$$TARGET_PROJECT_NAME\\release
} else:unix {
# 源文件路径
DEBUG_SOURCE_PATH = $$PROJECT_OUT_PWD/debug/$$SOURCE_PROJECT_NAME.so
RELEASE_SOURCE_PATH = $$PROJECT_OUT_PWD/release/$$SOURCE_PROJECT_NAME.so
# 目标路径
DEBUG_TARGET_PATH = $$PROJECT_OUT_PWD/../$$TARGET_PROJECT_NAME/debug
RELEASE_TARGET_PATH = $$PROJECT_OUT_PWD/../$$TARGET_PROJECT_NAME/release
}
# 根据构建模式选择复制命令
win32 {
CONFIG(debug, debug|release) {
# Debug 模式下的复制命令
QMAKE_POST_LINK += copy /Y $$quote($$DEBUG_SOURCE_PATH) $$quote($$DEBUG_TARGET_PATH)
} else {
# Release 模式下的复制命令
QMAKE_POST_LINK += copy /Y $$quote($$RELEASE_SOURCE_PATH) $$quote($$RELEASE_TARGET_PATH)
}
} else {
CONFIG(debug, debug|release) {
# Debug 模式下的复制命令 (Unix-like 系统)
QMAKE_POST_LINK += cp -f $$quote($$DEBUG_SOURCE_PATH) $$quote($$DEBUG_TARGET_PATH)
} else {
# Release 模式下的复制命令 (Unix-like 系统)
QMAKE_POST_LINK += cp -f $$quote($$RELEASE_SOURCE_PATH) $$quote($$RELEASE_TARGET_PATH)
}
}
#####################################################################################################
第4、第5步,选择其中一种方式即可。