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

时间:2018-05-02 00:49:01

标签: cmake

在一个简单的CmakeLists.txt文件中,我放置以下内容:

find_library (c c)
find_library (a c)

匹配语法find_library(<var> <lib>)

我跑cmake . 我打开CMakeCache.txt并找到一个已经设置了libc的路径,并且c根本没有设置。

如果我使用set (c "text" CACHE STRING "") c将被设置为&#34; text&#34;

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

1 个答案:

答案 0 :(得分:0)

我试试了你的例子,似乎工作得很好:

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)