是什么阻止find_library(c c)在cmake中设置变量c?

是什么阻止find_library(c c)在cmake中设置变量c?,cmake,Cmake,在一个裸露的CmakeLists.txt文件中,我放置了以下内容: find_library (c c) find_library (a c) 要匹配语法,请查找库() 我运行cmake. 我打开cmakcache.txt,发现a已经设置了libc的路径,而c根本没有设置 如果改用set(c“text”CACHE STRING“”)c将被设置为“text” 为什么我可以用set()设置c,而不能用find_library()设置c?我已经尝试了您的示例,它似乎工作得很好: cmake_最低要求

在一个裸露的CmakeLists.txt文件中,我放置了以下内容:

find_library (c c)
find_library (a c)
要匹配语法,请查找库()

我运行
cmake.
我打开cmakcache.txt,发现a已经设置了libc的路径,而c根本没有设置

如果改用
set(c“text”CACHE STRING“”)
c将被设置为“text”


为什么我可以用set()设置c,而不能用find_library()设置c?

我已经尝试了您的示例,它似乎工作得很好:

cmake_最低要求(2.4版)
项目(TestFindLibC无)
文件(写为“libc.a”)
查找图书馆(
C
名称c
路径“${CMAKE\u CURRENT\u SOURCE\u DIR}”
没有默认路径
)
查找图书馆(
A.
名称c
路径“${CMAKE\u CURRENT\u SOURCE\u DIR}”
没有默认路径
)
消息(“c=${c}”)
消息(“a=${c}”)
结果:

# cmake ..
c = [...]/libc.a
a = [...]/libc.a
因此,我认为@Tsyvarev的问题必须出现在CMake代码中未显示的部分。尝试将以下命令添加到主
CMakeLists.txt
文件的顶部以进行调试:

variable\u watch(a)

给定的调用(
find\u library(ac)
find\u library(ac)
)实际上是连续的,或者它们之间有其他命令?
a
c
变量是否在其他地方设置?如果是,请删除
CMakeCache.txt
文件并重新运行CMake。之后,您将以相同的方式设置
a
c
变量。因此,这在多个RHEL7环境(cmake最初编写的地方)中运行良好,但在Debian环境中特别失败。这似乎是涉及Debian的平台特定问题。