shell - 如何在shellscript中获取包的CMake变量
问题描述
我想找到Qt5WaylandClient_PRIVATE_INCLUDE_DIRS
由 Qt5WaylandClient 包设置的变量。我怎样才能从外壳(破折号)中得到它?像这样的东西:
cmake -find_package(Qt5WaylandClient) -get_variable Qt5WaylandClient_PRIVATE_INCLUDE_DIRS
或者
cmake -file path/to/my/CMakeLists.txt -get_variable Qt5WaylandClient_PRIVATE_INCLUDE_DIRS
解决方案
CMake 确实有一个--find-package
命令行选项,但它没有得到很好的支持,也没有很好的文档记录。这里有一个描述其功能的答案,但这可能不是您想要的。
最初,您似乎可以cmake
在脚本模式下使用-P
, 在包含您的find_package(Qt5WaylandCleint)
命令的 CMake 文件上运行并将其变量打印到控制台。
cmake -P MyFindQt5WaylandClient.cmake
但是,find_package()
在 CMake 项目范围之外运行是行不通的。它会产生几个错误,因为 CMake 对系统或您的目标语言一无所知。因此,您必须创建一个最小的 CMake 项目,然后运行find_package()
. 像这样的 CMakeLists.txt 文件应该可以工作:
cmake_minimum_required(VERSION 3.16)
project(MyProj)
find_package(Qt5WaylandClient REQUIRED)
# Print the desired variable.
message("${Qt5WaylandClient_PRIVATE_INCLUDE_DIRS}")
然后您可以从命令行运行cmake
,这会将Qt5WaylandClient_PRIVATE_INCLUDE_DIRS
变量打印到控制台。您可以使用-S
和-B
命令行选项分别指定 CMake 源和二进制目录。
cmake -S . -B build
推荐阅读
- session - TYPO3 10.4 会话变量
- .net-core - 控制台应用程序无法在任务计划程序中使用 Selenium Scraping 运行
- ubuntu - haproxy - 无法绑定套接字错误 - ubuntu 20.04
- android - 是否可以通过导航组件 DeepLink 传递整数数组?
- javascript - 需要帮助将代码片段隔离到 JavaScript 中的函数中
- javascript - 输入初始值反应js
- sql - RPGLE 准备语句抛出 SQLSTATE=42601
- javascript - JSON对象作为@Input的字符串 - Angular
- rust - 如何本地化计时日?
- python - 币安美国的 websocket