より大きなプロジェクトの一部として 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 を参照): すべてが期待どおりに動作します。
glog
Linux でビルドするには、 .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/
です。
わかりました、私はそれを機能させる方法がわかりません..そしてどのように
- インストールディレクトリを指定
- lib ビルド タイプ (静的/共有)
- 構成タイプ (デバッグ/リリース) - 動作するかどうかは不明
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()
助けてくれてありがとう