cmakeを使用してAppVeyor経由でWindows用のクロスプラットフォームQTアプリケーションをコンパイルしようとしています。AppVeyor C++ cmake PNGパッケージのコンパイルエラー
Linuxでは、cmakeはうまくコンパイルするので、CMakeLists.txtは有効である必要があります。
AppVeyorは必要なライブラリをコンパイルします。これも機能します。 CMakeLists.txtの内側に対応する部分がある
-- Could NOT find ZLIB (missing: ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
CMake Error at C:/Program Files (x86)/CMake/share/cmake-3.5/Modules/FindPackageHandleStandardArgs.cmake:148 (message):
Could NOT find PNG (missing: PNG_LIBRARY PNG_PNG_INCLUDE_DIR)
Call Stack (most recent call first):
C:/Program Files (x86)/CMake/share/cmake-3.5/Modules/FindPackageHandleStandardArgs.cmake:388 (_FPHSA_FAILURE_MESSAGE)
C:/Program Files (x86)/CMake/share/cmake-3.5/Modules/FindPNG.cmake:157 (find_package_handle_standard_args)
CMakeLists.txt:20 (find_package)
: しかし、それは、プロジェクトに来て、それは次のエラーで失敗しCMakeLists.txt
find_package(PNG REQUIRED)
[...some other cmake stuff...]
# link required other libraries
include_directories(${PNG_INCLUDE_DIR} ${GSL_INCLUDE_DIRS})
target_link_libraries(projectName ${PNG_LIBRARY} ${GSL_LIBRARIES})
これは、現在のビルドで失敗します。 https://ci.appveyor.com/project/zebastian/mandelbulber2
使用CMakeLists.txtとappveyor.ymlファイルは、ここで、プロジェクトのルートにあります。 https://github.com/zebastian/mandelbulber2
FindPNG.cmakeが存在するので、zlibだけが不足しているように見えますが、少し奇妙なようです。 いくつかのpng/zlibソースフォルダをダウンロードしてコンパイルするか、外部依存関係を使用してこの問題を回避するappveyor.ymlファイルをいくつか見てきましたが、IMHOはCIの単純な作業でなければなりません。
何か不足していますか? nugetもで非常にうまく動作依存関係のこの種を解決するために呼ばれるパッケージマネージャがあるWindowsで
:
すべてのヘルプ感謝...
キャッシュをクリアしてCMakeを再実行します。 PNGが見つからないと出力した場合、CMakeはそれを見つけることができず、CMakeにどこにそれを見つけるかを伝える必要があります。 – usr1234567
エラーメッセージから、CMakeはzlibもpngも見つけることができないようです。あなたのコンベヤにインストールされているライブラリはどこにありますか?ウィンドウでは、通常、ビルドにはないような、すべてのライブラリの場所をCMakeにスプーフィングする必要があることに注意してください。 – ComicSansMS
@ usr1234567ありがとうございますが、自分のマシン上でビルドが行われるべきであれば、これはTODOになります。ビルドCI AppVeyorは、一般的なビルドプログラム/パッケージ/などでほとんど裸のWindows仮想マシンを設定するymlファイルを記述するだけです。 説明ファイルは、https://github.com/zebastian/mandelbulber2/blobで見つけることができます。 /master/.appveyor.yml このymlファイルの中でこの問題をうまく解決できるのであれば良いでしょう。これはAppVeyorの内部的な質問の多くです。 ComicSansMS:はい、これは問題のようです。しかし、FindPNG.cmakeは存在するようです。 – zebastian