web-dev-qa-db-ja.com

cmake-CMakeLists.txtはルートフォルダーにありません(ただし、ソースには含まれています)

Libpngライブラリをコンパイルしようとしています。事は私がこのライブラリの特定のバージョン-1.2.37-を必要としているということです。私がそれを使用しているプロジェクトはこのバージョンで書かれているからです。このバージョンのソースコードを見つけました here (GnuWin32プロジェクト)。

しかし、フォルダー構造は次のようになります。

libpng-1.2.37-src/
   contrib/
   projects/
   scripts/
      CMakeLists.txt
   png.h
   pngread.c
   pngwrite.c
   ...

CMakeLists.txtは、ソースファイルよりも1レベル深いです。

私はもう試した:

  1. ソースディレクトリlibpng-1.2.37-src /->エラーが発生しました:ソースディレクトリにCMakeLists.txtが含まれていないようです
  2. ソースディレクトリlibpng-1.2.37-src/scripts->複数のエラーが発生しました:ファイルlibpng-1.2.37-src/scripts/scripts/libpng.pc.inが存在しません。
  3. cMakeLists.txtを/ scriptsから/ libpng-1.2.37-srcにコピーし、ソースディレクトリを/ libpng-1.2.37-srcに設定します->エラーが発生しました:ソース「/libpng-1.2.37-src/CMakeLists.txt」は、キャッシュの生成に使用されたソース「/libpng-1.2.37-src/scripts/CMakeLists.txt」と一致しません。

それを機能させるにはどうすればよいですか? CMakeLists.txtファイルが使用できない場合に含まれる理由がわかりません。

7
dvdkouril

INSTALLファイルは明示的に言っています:

If you want to use "cmake" (see www.cmake.org), copy CMakeLists.txt
from the "scripts" directory to this directory and type

   cmake . [-DPNG_MMX=YES] -DCMAKE_INSTALL_PREFIX=/path
   make
   make install

そして付記として、これの前にそれをインストールする古典的な方法は次のとおりです:

On Unix/Linux and similar systems, you can simply type

    ./configure [--prefix=/path]
    make check
    make install

3)で正しく行ったようですが、再試行する前にビルドディレクトリをクリーンアップするのを忘れていました。

5
Silex

プロジェクトで使用するライブラリの場合は、「superbuild」と呼ばれる手法(ExternalProject_Addを使用)を使用して自動的にビルドできます。説明されているようにSOURCE_SUBDIRを指定する ここ をCMakeLists.txtのサブディレクトリに指定すると、次のようなことができます

  ExternalProject_Add(libpng
  GIT_REPOSITORY    url-to-your-repository.git
  GIT_TAG           v1.2.37
  SOURCE_SUBDIR     "scripts"
0
Vaclav P.