我想在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
它似乎工作,我現在有新的錯誤,很容易理解,謝謝:) –