5

より大きなプロジェクトの一部として CMake を使用してGoogle glogを構築したい(ソリューション、Visual Studio の言葉で)。結果として欲しいもの:

cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug
   -DCMAKE_INSTALL_PREFIX:PATH=xxx {MAIN CMakeLists.txt location}

cmake --build . --target install --config Debug

構成でソリューションをビルドし、Debugファイルをxxxフォルダーにインストールします。

わかりました、glogメインソリューションのサブプロジェクトです:

add_subdirectory(third_party/glog_0.3.4)

Windows ではすべて問題ありません ( CMakeLists.txt を参照): すべてが期待どおりに動作します。

glogLinux でビルドするには、 .h.in(他の作業の中でも) ファイルも構成する必要があります。CMakeconfigure_fileが機能しません:ファイルはあり.hますが、ファイルのみが含まれています#undef。しかし、 は正常に動作glogするので、 ExternalProject_Add()が役立つ可能性があることが./configureわかりました。

if(UNIX)
include(ExternalProject)

ExternalProject_Add(glog
    SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}
    CONFIGURE_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/configure
    CMAKE_GENERATOR 'Unix Makefiles'
    BUILD_COMMAND ${MAKE})
endif()

そしてcmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX:PATH=xxx .うまく動作しますcmake --build . --target install --config Debugが、私に与えます:

make: *** No rule to make target 'install'.  Stop.

を呼び出すcmake --build . --config Debugと、glog をビルドして にインストール/usr/local/libします。次の試行:

if(UNIX)
include(ExternalProject)

get_filename_component(glog_absolute_install_dir ${CMAKE_INSTALL_PREFIX} ABSOLUTE)

ExternalProject_Add(glog
    SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}
    CONFIGURE_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/configure --prefix=${glog_absolute_install_dir}
    CMAKE_GENERATOR 'Unix Makefiles'
    BUILD_COMMAND ${MAKE}
    INSTALL_DIR ${glog_absolute_install_dir}
    INSTALL_COMMAND "${MAKE}")
endif()

にファイルをインストールせずxxx、ビルドするだけglog-prefix/src/glog-build/です。

わかりました、私はそれを機能させる方法がわかりません..そしてどのように

  1. インストールディレクトリを指定
  2. lib ビルド タイプ (静的/共有)
  3. 構成タイプ (デバッグ/リリース) - 動作するかどうかは不明

Windows では、glog のドキュメントによると、2 番目のケースでは次のようにします。

add_library(${lib_name} ${lib_type} ${src_files})
if(build_shared_lib)
    add_definitions(-DLIBGLOG_EXPORTS)
else()
    add_definitions(-DGOOGLE_GLOG_DLL_DECL=)
endif()

助けてくれてありがとう

4

2 に答える 2