我有一个带有几个带有共享库的应用程序的项目设置,所有这些都使用SUBDIRS项目很好地构建,其中应用程序依赖于共享库。
TEMPLATE = subdirs
SUBDIRS = app1 app2 sharedLib
app1.depends = sharedLib
app2.depends = sharedLib
每个应用程序还包含许多测试,并设置了
CONFIG += testcase
。这将创建一个
check
目标,因此我们可以使用make check
从顶级.pro运行所有单元测试。问题在于某些应用程序测试要求sharedLib中存在代码,因此需要根据每个平台库查找规则来发现它。
在Windows上,一种选择是在
PATH
上具有sharedLib位置,在Linux上,我们可以在mac LD_LIBRARY_PATH
上将sharedLib位置添加到DYLD_LIBRARY_PATH
中。一种解决方案是只在运行
make check
之前设置构建的共享库的位置:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:build/sharedDll/
make check
虽然可以,但是似乎有点多余,因为构建共享脚本本身是在构建共享库,因此他们知道sharedLib二进制位置的路径,可以从.pro/pri文件中的以下位置引用该路径:
$$TOP_BUILDDIR/sharedLib/release
因此,是否有必要针对
PATH/LD_LIBRARY_PATH/DYLD_LIBRARY_PATH
命令从项目文件中设置make check
? 最佳答案
如果使用的是gcc,则可以使用gcc的rpath参数。
QMAKE_CXXFLAGS + = -rpath =/the/absolute/path
如果您使用该技术,则无需编辑LD_LIBRARY_PATH