cmake - 在宏内使用带有 CMake 的 find_package 的 Qt4 出现问题
问题描述
我在 CMake(版本 3.10)中定义了以下宏:
macro(configureQt4 requiredVersion selectedPackages)
message(STATUS "selectedPackages: ${selectedPackages}")
find_package(Qt4 ${requiredVersion} COMPONENTS ${selectedPackages} REQUIRED )
endmacro()
现在,当我尝试通过以下方式调用宏时,出现错误:
set(SelectedQt4Packages "QtCore QtNetwork")
configureQt4( 4.8 ${SelectedQt4Packages})
报告的错误是:
CMake Error at /usr/share/cmake-3.10/Modules/FindPackageHandleStandardArgs.cmake:137 (message):
Could NOT find Qt4 (missing: QT_QTCORE QTNETWORK_INCLUDE_DIR QT_QTCORE
QTNETWORK_LIBRARY) (found suitable version "4.8.7", minimum required is
"4.8")
如果我find_package()
在宏内按以下方式调用,它可以工作!
find_package(Qt4 ${requiredVersion} COMPONENTS QtCore QtNetwork REQUIRED )
但是我需要通过设置一个变量来使用它,如前所述。我该如何解决这个问题?
解决方案
如果要在 CMake 中设置列表变量,可以通过排除引号来实现:
set(SelectedQt4Packages QtCore QtNetwork)
像这样使用引号"QtCore QtNetwork"
只会在两个组件名称之间创建一个带有空格的字符串,这可能不是您想要的。
现在,您可以将SelectedQt4Packages
list 变量传递给您的宏,但请务必用引号将其括起来(如此答案中所建议的那样):
set(SelectedQt4Packages QtCore QtNetwork)
configureQt4( 4.8 "${SelectedQt4Packages}")
推荐阅读
- javascript - 如何在此代码中将上传 XLSX 文件功能更改为 URL XLSX 位置
- java - GroupLayout 中的参数在哪里更改?
- python - Windows 中的设置命令不适用于 django SECRET_KEY | django.core.exceptions.ImproperlyConfigured:设置 SECRET_KEY 环境变量
- react-native - 使用 Reanimated 更改 Y 轴上的文本位置
- python - Django rest 删除请求错误“'file' 属性没有与之关联的文件。”
- datetime - 为日期时间字段设置默认时间 odoo 11
- java - 初始化并填充 Maps Maps
- wordpress - 使用 WordPress add_rewrite_rule() 更改帖子 URL
- php - 在windows中哪里可以找到vs代码目录/var/www/html/
- html - 根据类数更改css