自从我在C++
工作多年以来,我从未使用过CMake
。我试图编译一个名为ngmlr的程序,它使用CMake
。它在我试图建立它的其他系统上无缝地工作。这一次,CMake
找到ZLIB
(Found ZLIB: /usr/lib64/libz.so (found version "1.2.3")
),按照ngmlr
的要求,但随后的make
因ld: cannot find -lz
而失败。CMake是否需要静态库(例如ZLIB)?
我认为我知道发生了什么:CMake
发现动态ZLIB
库(libz.so
),但CMakeLists.txt
文件需要static
(我发现文件中的下列选项:option(STATIC "Build static binary" ON)
)。据我所知,这台机器上缺少静态库(libz.a
)。它不在与libz.so
相同的/usr/lib64
目录中。 locate
不可用。
问题:
- 不似乎正确的吗?
- 对于教育,假设这是问题,你能强制
CMake
专门寻找static
ZLIB
?例如,由于开发人员需要static
,所以很快就会很高兴立即知道缺失的static
库是问题所在,而不是我花费很长时间才弄明白的。
我已经广泛地寻找了两个明确的答案,但没有发现任何结论性的(例如,Force cmake to use static libraries)。
UPDATE 我没有确认问题是ld
找不到静态库。现在我特别想知道如果static
库不存在,开发人员是否可以告知CMake
发生错误,并保存其他人。
cmake version 2.8.8
我很感激我如何能提高我的问题的任何反馈您的项目应该被抛出。 –