【发布时间】:2017-06-23 23:32:24
【问题描述】:
我在C++ 工作已经有好几年了,我之前从未使用过CMake。我正在尝试编译一个名为ngmlr 的程序,它使用CMake。它可以在我尝试构建的其他系统上无缝运行。这一次,CMake 按照ngmlr 的要求找到了ZLIB (Found ZLIB: /usr/lib64/libz.so (found version "1.2.3")),但随后的make 以ld: cannot find -lz 失败。
我认为我知道发生了什么:CMake 找到了动态的 ZLIB 库 (libz.so),但 CMakeLists.txt 文件需要 static(我在文件:option(STATIC "Build static binary" ON))。据我所知,这台机器上缺少静态库 (libz.a)。它与libz.so 不在同一个/usr/lib64 目录中。 locate 不可用。
问题:
- 这看起来正确吗?
- 对于教育,假设这是问题所在,你能否强制
CMake专门寻找staticZLIB?例如,由于开发人员需要static,因此最好立即知道缺少的static库是问题所在,而不是我花了很长的时间才弄明白。
我已经广泛寻找这两个问题的明确答案,但没有找到任何结论性的答案(例如,Force cmake to use static libraries)。
更新
我确实确认问题是ld 找不到静态库。现在我特别想知道如果static 库不存在,开发人员是否可以告诉CMake 抛出错误,并保存其他人。
cmake version 2.8.8
【问题讨论】:
-
对于如何改进我的问题的任何反馈,我将不胜感激。