C++ 为图书馆做检查
我将qt项目设置为subdirs项目,源代码在src目录中,单元测试代码设置在test目录中。每个项目都有自己的项目文件。我希望能够在其他计算机上编译源代码,但他们可能没有googletest库设置。我已经研究了qmake测试函数“requires()”和“packagesExist()”但是,它们似乎不是为处理外部库而构建的C++ 为图书馆做检查,c++,qt,qt4,qmake,googletest,C++,Qt,Qt4,Qmake,Googletest,我将qt项目设置为subdirs项目,源代码在src目录中,单元测试代码设置在test目录中。每个项目都有自己的项目文件。我希望能够在其他计算机上编译源代码,但他们可能没有googletest库设置。我已经研究了qmake测试函数“requires()”和“packagesExist()”但是,它们似乎不是为处理外部库而构建的 如果找不到测试库,我如何指示qmake跳过测试项目?如果库存在于其中,则不检查典型位置是不可能的 不幸的是,googletest似乎也没有提供package config
如果找不到测试库,我如何指示qmake跳过测试项目?如果库存在于其中,则不检查典型位置是不可能的 不幸的是,googletest似乎也没有提供package config“.pc”文件,因此不能使用
packagesExist()
qmake函数
因此,我会使用一组exist
调用来解决这个问题,或者从qmake切换到更好的方法,比如cmake
!exists("/foo/bar/baz.so"):!exists("/hello/world/baz.so"):...: message("Google test is not installed on your system")
如果您试图链接到的库没有pkgconfig信息,则可以使用为每个库进行qmake config测试。我将在这里向您展示如何使用qmake的此功能 qtCompileTest qmake配置测试将在qmake时间运行。如果测试编译,config_u将被添加到config变量中,qmake将打印
检查。。。是
或正在检查。。。否
取决于测试是否编译
在项目目录中,创建一个名为config_tests的目录,并在该目录下为要测试的库或功能创建一个目录,启动一个简单的qmake项目和main.cpp文件,最终如下所示:
myproject/
myproject.pro
<source files, etc>
config_tests/
googletest/
googletest.pro
main.cpp
在编译需要googletest的功能的地方,您可以将它们包装在以下qmake测试中:
CONFIG(config_googletest) {
}
CONFIG(config_googletest) {
}