这是我的问题: 我想让我的 qmake 脚本检测我的 opencv 版本并将结果保存在 CONFIG 变量中。我需要结果具有以下形式:“opencv20”,“opencv21”,“opencv22”等。 我知道我可以使用 system() 函数来调用 bash 命令,并且想使用这样的东西:
CONFIG += opencv$$system(pkg-config --modversion opencv | cut -d. -f'1,2' | sed 's/\.//g')
它在我的终端中工作正常,但 qmake 给了我“opencv2”。当我尝试打印输出时。 pkg-config 和 cut 命令的输出单独是正确的,所以我假设 sed 调用以某种方式使 qmake 感到困惑......有任何提示吗?
最佳答案
system()
命令在子 shell 中执行。这就是为什么你必须转义你的字符串:
CONFIG += opencv$$system(pkg-config --modversion opencv | cut -d . -f \'1,2\' | sed \'s/\.//g\')
关于bash - 在 qmake 脚本中调用 sed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9443593/