cmake - 是什么阻止 find_library(cc) 在 cmake 中设置变量 c?
问题描述
在一个裸露的 CmakeLists.txt 文件中,我放置了以下内容:
find_library (c c)
find_library (a c)
匹配语法find_library(<var> <lib>)
我运行cmake .
我打开CMakeCache.txt,发现a已经设置了libc的路径,而c根本没有设置。
如果我改为使用set (c "text" CACHE STRING "")
c 将设置为“文本”
为什么我可以用 set() 设置 c 而不能用 find_library()?
解决方案
我已经给你的例子一个尝试,它似乎工作得很好:
cmake_minimum_required(VERSION 2.4)
project(TestFindLibC NONE)
file(WRITE "libc.a" "")
find_library(
c
NAMES c
PATHS "${CMAKE_CURRENT_SOURCE_DIR}"
NO_DEFAULT_PATH
)
find_library(
a
NAMES c
PATHS "${CMAKE_CURRENT_SOURCE_DIR}"
NO_DEFAULT_PATH
)
message("c = ${c}")
message("a = ${c}")
结果是:
# cmake ..
c = [...]/libc.a
a = [...]/libc.a
所以我和@Tsyvarev 认为你的问题必须在你的CMake 代码中未显示的部分。尝试将以下命令添加到主CMakeLists.txt
文件的顶部以进行调试:
variable_watch(a)
推荐阅读
- java - 按名称对 GridView 中的项目进行排序
- android - 如果滚动视图位于顶部,如何隐藏视图?
- scala - Flink RocksDB 不在任务管理器中创建 sst 文件
- java - Azure 文件存储内容类型始终更改为应用程序/八位字节流建议解决方案我该如何修复
- ionic-framework - 在 IONIC 中呈现常规 HTML
- angular - 当我首先在数组中添加项目时,ngFor 重新打印所有 dom
- node.js - 为什么我无法在节点 js 中更新 env 变量
- ios - 动画 UIPopoverPresentationController 视图的中心位置
- php - 如何通过 MySQL 查询或 PHP 代码删除无法识别的字符?
- java - Arraylist 索引超出范围