ho affrontato con un problema quando stavo cercando di usare Google provaCome clonare e integrare esterno (da Git) progetto CMake in locale uno
c'è un sacco di manuali come utilizzare ExternalProject_Add per la GTEST l'aggiunta in il progetto, tuttavia la maggior parte di questi descrive un metodo basato sul download dell'archivio zip con gtest e lo crea
come sappiamo gtest glyub e progetto basato su cmake. quindi mi piacerebbe trovato nativo per modo cmake. se questo sarebbe un progetto di testa-solo, mi piacerebbe scrivere qualcosa di simile a:
cmake_minimum_required(VERSION 2.8.8)
include(ExternalProject)
find_package(Git REQUIRED)
ExternalProject_Add(
gtest
PREFIX ${CMAKE_CURRENT_SOURCE_DIR}/ext
GIT_REPOSITORY https://github.com/google/googletest.git
TIMEOUT 10
UPDATE_COMMAND ${GIT_EXECUTABLE} pull
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
LOG_DOWNLOAD ON
)
ExternalProject_Get_Property(gtest source_dir)
set(GTEST_INCLUDE_DIR ${source_dir}/googletest/include CACHE INTERNAL "Path to include folder for GTest")
set(GTEST_ROOT_DIR ${source_dir}/googletest CACHE INTERNAL "Path to source folder for GTest")
include_directories(${INCLUDE_DIRECTORIES} ${GTEST_INCLUDE_DIR} ${GTEST_ROOT_DIR})
message(${GTEST_INCLUDE_DIR})
e ha aggiunto questo script dal mio progetto cmake come:
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake.modules/")
include(AddGTest)
....
add_dependencies(${PROJECT_NAME} gtest)
Tuttavia, questo richiede un passaggio di generazione. come dovrebbe essere implementato?
- aggiungendo BUILD_COMMAND in ExternaProject_Add? e il collegamento con le librerie prodotte?
o includendo i cmakelist di gtest nel mio progetto, qualcosa del genere?
add_subdirectory ($ {} CMAKE_SOURCE_DIR \ ext \ src \ GTEST \ googletest \ CMakeLists.txt)
questo non è il modo corretto perché sul momento del progetto caricare la cartella non esiste
- altri modi?
qual è il modo corretto/preferibile?
Grazie, questo è quello che voglio sentire - "cmake fa questo di default", non ha trovato questo nel manuale, e ha cercato il comando di compilazione – amigo421