在一个简单的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()设置?
答案 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)