42

CMakeLists.txt内から「Unix Makefiles」ジェネレーターを使用するようにCMakeに強制したいと思います。

これは私が現在使用しているコマンドです。

cmake -G "Unix Makefiles" .

これであってほしいです。

cmake .

VC がインストールされ、カスタム ツール チェーンがインストールされた Windows で実行する場合。

ファイルにジェネレーターを設定できると思いCMakeLists.txtます。

多分このようなもの。

set(CMAKE_GENERATOR "Unix Makefiles")
4

4 に答える 4

14

で設定すると、変数のCMAKE_GENERATOR設定が遅すぎるように思えCMakeLists.txtます。使用する場合 (開始時でもCMakeLists.txt)

set(CMAKE_GENERATOR "Ninja")
message("generator is set to ${CMAKE_GENERATOR}")

次のような出力が表示されます

% cmake ../source
-- The C compiler identification is GNU 4.9.2
...
-- Detecting CXX compile features - done
generator is set to Ninja
-- Configuring done
-- Generating done
-- Build files have been written to: /tmp/build

したがって、変数は生成手順の最後にのみ設定されます。次のようなものを使用する場合

set(CMAKE_GENERATOR "Ninja" CACHE INTERNAL "" FORCE)

CMakeLists.txt、最初の実行時にcmake ../source( なしで-G)デフォルトのジェネレーターが使用されます。ただし、変数CMAKE_GENERATORはキャッシュに格納されます。そのため、後で再実行すると、キャッシュcmake ../source内の変数で指定されたとおりにジェネレーターが使用されます。CMAKE_GENERATOR

ただし、これは確かに最も洗練されたソリューションではありません;-)cmake -G generatorユーザーのために実際に実行するバッチファイルを使用するかもしれません...

于 2015-04-23T09:34:42.467 に答える
2

これは私が得るものではありません。同じコマンドを実行すると、cmakeはgccコンパイラ/makeユーティリティを探します。PATHが正しく設定されていないと、次のようなエラーが発生します。

D:\ Development \ build> cmake -G "Unix Makefiles" .. \ source ..
CMakeエラー:CMakeは「UnixMakefiles」に対応するビルドプログラムを見つけることができませんでした。CMAKE_MAKE_PROGRAMが設定されていません。
  おそらく別のビルドツールを選択する必要があります。
CMakeエラー:エラーが必要な内部CMake変数が設定されていません。cmakeが正しく構築されていない可能性があります。
欠落している変数は次のとおりです。
CMAKE_C_COMPILER_ENV_VAR
CMakeエラー:エラーが必要な内部CMake変数が設定されていません。cmakeが正しく構築されていない可能性があります。
欠落している変数は次のとおりです。
CMAKE_C_COMPILER
CMakeエラー:cmakeモジュールファイルが見つかりませんでした:D:/Development/build/CMakeFiles/CMakeCCompiler.cmake
CMakeエラー:エラーが必要な内部CMake変数が設定されていません。cmakeが正しく構築されていない可能性があります。
欠落している変数は次のとおりです。
CMAKE_CXX_COMPILER_ENV_VAR
CMakeエラー:エラーが必要な内部CMake変数が設定されていません。cmakeが正しく構築されていない可能性があります。
欠落している変数は次のとおりです。
CMAKE_CXX_COMPILER
CMakeエラー:cmakeモジュールファイルが見つかりませんでした:D:/Development/build/CMakeFiles/CMakeCXXCompiler.cmake
CMakeエラー:EnableLanguageの後、CMAKE_C_COMPILERが設定されていません
CMakeエラー:EnableLanguageの後、CMAKE_CXX_COMPILERが設定されていません
-設定が不完全で、エラーが発生しました!

gcc / mingwがパスにある場合、すべてが正常に機能します。では、PATH変数またはCMAKEバージョンに関する詳細情報を提供できますか?

于 2012-07-02T10:21:38.860 に答える