2016-05-02 6 views
-1

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で

すべてのヘルプ感謝...

+0

キャッシュをクリアしてCMakeを再実行します。 PNGが見つからないと出力した場合、CMakeはそれを見つけることができず、CMakeにどこにそれを見つけるかを伝える必要があります。 – usr1234567

+0

エラーメッセージから、CMakeはzlibもpngも見つけることができないようです。あなたのコンベヤにインストールされているライブラリはどこにありますか?ウィンドウでは、通常、ビルドにはないような、すべてのライブラリの場所をCMakeにスプーフィングする必要があることに注意してください。 – ComicSansMS

+0

@ usr1234567ありがとうございますが、自分のマシン上でビルドが行われるべきであれば、これはTODOになります。ビルドCI AppVeyorは、一般的なビルドプログラム/パッケージ/などでほとんど裸のWindows仮想マシンを設定するymlファイルを記述するだけです。 説明ファイルは、https://github.com/zebastian/mandelbulber2/blobで見つけることができます。 /master/.appveyor.yml このymlファイルの中でこの問題をうまく解決できるのであれば良いでしょう。これはAppVeyorの内部的な質問の多くです。 ComicSansMS:はい、これは問題のようです。しかし、FindPNG.cmakeは存在するようです。 – zebastian

答えて

0

[OK]を、私はこの特定の問題の解決策を見つけましたアデバイザ。 PSおよび移動が周りのものを移動するための唯一のです

#packages from nuget 
- nuget install zlib-msvc14-x64-master -Version 1.2.8.4 -Source https://ci.appveyor.com/nuget/zlib-shallow-x0n34b3pfq1b 
- ps: move zlib*\* deps -force 
- move deps\zlibstatic.lib deps\zlib.lib 
- nuget install libpng-msvc14-x64-master -Version 1.6.18.44 -Source https://ci.appveyor.com/nuget/libpng-7hwq4pmmrc48 
- ps: move libpng*\* deps -force 
- move deps\libpng16_static.lib deps\png.lib 

:のlibpngをインストールするには、私は、次のコマンドを使用していました。私にとっては、これは合理的な解決策であると思われ、退屈な自己編集から人々を救うかもしれません。

コンパイルは、4文字のプラグマを占有し、衝突したり、他のmsvc固有の動作が原因で失敗します。しかし、それは別の日の話です...