1

わかった。CMake GUI から構成と生成を正常に行うことができ、ビルド フォルダーに多数のファイルが生成されているように見えます。しかし、それは Make ファイルを作成していません。何か案は?

編集:

私がしたことは、メイン プロジェクトとスタティック ライブラリ プロジェクトを使用して Eclipse でワークスペースを作成することだけでした。これは、メイン プロジェクトが出力の「Hello」部分を生成し、静的ライブラリが出力の「World」部分を生成する単純な HelloWorld アプリケーションです。

CMake の出力にエラー メッセージが表示されますか? いいえ。CMake GUI からの唯一の出力は、Configuring done と Generating Done です。

正しいジェネレーターが選択されていますか? どのような設定を使用していますか? 私は CMake を初めて使用するので、あなたが何を求めているのか完全にはわかりませんが、スクリーン キャプチャを提供できます。

CMake GUI

上記のスクリーン キャプチャは、バックグラウンドで Eclipse プロジェクト構造を示し、フォアグラウンドで構成を含む CMake GUI を示しています。以下のスクリーン キャプチャは、生成されるファイルを示しています。

CMake ファイル

-------------------------------------------------- ---詳細情報---------------------------------------------- --

すべてのビルド フォルダーを削除し、cmake を再度実行しました。今回は、エラーのある次の出力を受け取りました。

-- The C compiler identification is Clang 4.2.0
-- The CXX compiler identification is Clang 4.2.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
World_INCLUDE_DIRS
   used as include directory in directory /Users/pdl/Development/Patricia's New World Sandbox/HelloWorldCMake/Hello/src
World_LIBRARIES
   linked by target "hello" in directory /Users/pdl/Development/Patricia's New World Sandbox/HelloWorldCMake/Hello/src

-- Configuring incomplete, errors occurred!

私の FindWorld.cmake ファイルの内容は次のとおりです。

find_path(World_INCLUDE_DIRS World.h /usr/include "$ENV{WORLD_ROOT}/src")

find_library(World_LIBRARIES libWorld.a /usr/lib "$ENV{WORLD_ROOT}/Debug")

set(World_FOUND TRUE)

if (NOT World_INCLUDE_DIRS)
  set(World_FOUND FALSE)
endif (NOT World_INCLUDE_DIRS)

if (NOT World_LIBRARIES)
  set(World_FOUND FALSE)
endif (NOT World_LIBRARIES)

WORLD_ROOT は、ディレクトリが「/Users/pdl/Development/Patricia's New World Sandbox/HelloWorldCMake/World」に設定された環境変数として、私の Eclipse Hello プロジェクトに設定されています。 あはは! 私のEclipse環境変数が何であるかをCMakeが認識していない可能性がありますか?

Hello CMakeLists.txt ファイルの内容は次のとおりです。

cmake_minimum_required(VERSION 2.8.6)
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}")
find_package(World REQUIRED)
include_directories("${World_INCLUDE_DIRS}")
add_executable(hello Hello.cpp)
target_link_libraries(hello ${World_LIBRARIES})

私の World CMakeLists.txt ファイルの内容は次のとおりです。

cmake_minimum_required(VERSION 2.8.6)
project(World)
include_directories("${CMAKE_SOURCE_DIR}")
add_library(namer World.cpp World.h)

案の定、World プロジェクトへのパスが見つかりません。これは私の CMakeCache.txt ファイルにあります:

//Value Computed by CMake
Project_BINARY_DIR:STATIC=/Users/pdl/Development/Patricia's New World Sandbox/hello_world_build

//Value Computed by CMake
Project_SOURCE_DIR:STATIC=/Users/pdl/Development/Patricia's New World Sandbox/HelloWorldCMake/Hello/src

//Path to a file.
World_INCLUDE_DIRS:PATH=World_INCLUDE_DIRS-NOTFOUND

//Path to a library.
World_LIBRARIES:FILEPATH=World_LIBRARIES-NOTFOUND
4

1 に答える 1