我正在尝试为使用 libpng 的应用程序创建 CMake 层次结构。Libpng 需要 zlib。
由于 CMakeLists.txt 与 zlib 和 libpng 一起分发,我的第一个想法是制作以下结构:
/development
CMakeLists.txt
/zlib-1.2.5
CMakeLists.txt <- provided by zlib
-sources-
-build of zlib?-
/libpng154
CMakeLists.txt <- provided by libpng
-sources-
-build of libpng?-
/myapp
CMakeLists.txt
-sources-
/build
-build of myapp-
-build of zlib?-
-build of libpng?-
...然后,在顶级 CMakeLists.txt 中,放置如下内容:
project(everything)
...
add_subdirectory(zlib-1.2.5)
add_subdirectory(libpng154)
add_subdirectory(myapp)
...
但没有运气。libpng 的 CMakeLists.txt 执行 find_package(ZLIB...) 但它不知道在哪里查找。这可以在 Mac OS 上通过“安装”zlib 到 /usr 来解决。但这在 Windows 中不起作用。
所以我想我不会递归到子目录中。只需独立编译和构建 zlib 和 libpng 并在遍历到我自己的应用程序之前执行 find_package(PNG...)(单独编译和构建 zlib 和 libpng(通过提供的 CMakeLists.txt)工作,至少在 Mac OS 上但再次,只是因为 zlib 安装到 /usr)。
project(everything)
...
find_package(PNG...)
add_subdirectory(myapp)
...
不走运, find_package(PNG...) 失败了。我不知道如何让 find_package(PNG...) 知道在哪里寻找我刚刚构建的 libpng 库。例如对于 boost,您可以设置“BOOST_ROOT”变量。libpng有什么类似的吗?
亲切的问候,
丹尼尔·德克斯