当使用cmake将代码链接到库时,我试图了解当安装了多个版本时Ubuntu如何找到正确的库。
例如,在我的情况下,我通过运行libpng
安装了库sudo apt-get install libpng12-dev
。这个库很旧,但我需要保留它以与旧项目兼容。但是,我的另一个项目需要更新版本libpng16-dev
,该版本仅作为源代码提供,而不是apt-get
。所以,我下载了源代码,在本地编译和安装它。
我现在想知道的是,当我的find_package(PNG)
文件中有CMakeLists.txt
时,它会找到哪个版本?
答案 0 :(得分:0)
根据cmake documentation,如果您没有指定版本,请将其留给cmake查找库。对于某些库,例如您正在使用的库,这将导致问题。对于其他人来说,在某些情况下可能不会。听起来像你应该明确指定你需要的版本,如:
find_package(<package> [version] ...)