我想在Linux上编译openimageio(oiio),但它是一个混乱,因为我几乎不知道关于cmake
。我不想,我不能直接在/usr/local/
目录中将它们安装到我的电脑上,这就是问题所在。我在每个库目录执行这些命令的bash编译成功依赖关系:我的图书馆的自定义路径find_library
export workingdir=<path_to_my_project>
./configure --prefix=$workingdir/sdks/deploy
make install
而且这工作得很好,我的头是在一个include
目录和我的图书馆是一个lib
目录。
这里是我的项目的结构:
../<path_to_my_project>
/sdks
/build
/oiio
/png # Successfully compiled
/jpeg # Successfully compiled
/zlib # Successfully compiled
/boost # Successfully compiled
/ilmbase # Successfully compiled
/openexr # Successfully compiled
/deploy
/lib # all .a, .la and .so of successfully compiled libraries
/include # all headers of successfully compiled libraries
的问题是,有没有./configure
在oiio库目录中,所以我不知道如何设置前缀路径,当我执行make命令,我必须象这样的错误:
CMake Error at /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:108 (message):
Could NOT find PNG (missing: PNG_LIBRARY) (found version "1.6.21")
Call Stack (most recent call first):
/usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:315 (_FPHSA_FAILURE_MESSAGE)
/usr/share/cmake/Modules/FindPNG.cmake:105 (find_package_handle_standard_args)
src/libOpenImageIO/CMakeLists.txt:120 (find_package)
所以我设置变量和它没有任何错误,但是这是不是干净,我不知道我的库正确引用(如果我MES了变量的内容,它仍然在工作......)。
set (PNG_PNG_INCLUDE_DIR "<workingdir>/sdks/deploy/include/libpng16")
set (PNG_LIBRARY_DIR "<workingdir>/sdks/deploy/lib")
然后我试图创建自己的FindXXX.cmake
文件,但一些不具备的库根变量,反正我不知道这是否正确地找到所需的文件,而且,它使错误:
CMake Error at src/cmake/modules/FindPNG.cmake:104 (include):
include could not find load file:
<workingdir>/sdks/build/oiio/src/cmake/modules/FindPackageHandleStandardArgs.cmake
Call Stack (most recent call first):
src/libOpenImageIO/CMakeLists.txt:120 (find_package)
但它找到cmake
文件也无妨,因为其他错误被正确引用到我的文件,如果我打印的cmake
文件的东西它显示了当我运行make
命令。
要知道,我在oiio目录下运行的命令是make
,但我想告诉find_library
函数查看其他位置的内容。我可以回想起其他参数的功能,但我不能使用我自己的FindXXX.cmake文件。
在oiio存储库的INSTALL文件的段落43行中,它表示为自定义库设置环境变量,如PNGDIR
,但是它应该指向部署目录还是构建目录?他们说要查看CMake配置输出,也许知道要设置什么环境变量,但我不知道他们在说什么文件。
我试图设置PNGDIR,但它不起作用,如何知道变量名是否应该是PNGDIR?它也可以是PNGROOT?
export PNGDIR=<workingdir>/sdks/deploy # doesn't work
export PNGDIR=<workingdir>/sdks/build/png # doesn't work
如果有人能帮助我,我会需要编译这个库来使用它,希望有人能够理解我。
使用'CMAKE_PREFIX_PATH'。像“PNGDIR”这样的东西不应该再使用了。 – usr1234567
它似乎工作,我现在有新的错误,很容易理解,谢谢:) –