質問まとめ。
私は CMake を使用してビルドしたプロジェクト A を持っています。これはきれいにコンパイルされます。
しかし、CMake の ExternalProject_Add コマンドを使用して A を別のプロジェクト B にプルすると、A をビルドする時点でコンパイルが失敗します。
私が得るエラーの種類。
B をコンパイルすると、このようなエラーが発生します
warning: rvalue references are a C++11 extension [-Wc++11-extensions]
A のコンパイルを開始するとき (これも ExternalProject_Add によって取り込まれます)。
-std=c++11
関連するすべての CMakeList.txt ファイルに設定されていることに注意してください。
また、ExternalProject_Add を使用して Google プロジェクトをプルしていますが、問題は発生しません。
関連する CMakeLists.txt ファイルの詳細。
次の抜粋は、A の CMakeLists.txt からのものです。
# Use the C++11 standard.
set (CC_FLAGS "-std=c++11")
# Figure out the warning flags to use.
CHECK_CXX_COMPILER_FLAG("-pedantic-errors" SUPPORTS_PEDANTIC_ERRORS)
CHECK_CXX_COMPILER_FLAG("-Wall" SUPPORTS_WALL)
CHECK_CXX_COMPILER_FLAG("-Wextra" SUPPORTS_WEXTRA)
if (SUPPORTS_PEDANTIC)
set (CC_FLAGS "${CC_FLAGS} -pedantic")
endif()
# [omitted]... similarly for the rest of the flags.
set (CMAKE_CXX_FLAGS_RELEASE "-O3 ${CC_FLAGS}")
set (CMAKE_CXX_FLAGS_DEBUG "-O0 -g ${CC_FLAGS}")
以下はBさんのCMakeLists.txtより。異なる部分はアスタリスク (*) の後にあります。
# Use the C++11 standard.
set (CC_FLAGS "-std=c++11")
# Figure out the warning flags to use.
CHECK_CXX_COMPILER_FLAG("-pedantic-errors" SUPPORTS_PEDANTIC_ERRORS)
CHECK_CXX_COMPILER_FLAG("-Wall" SUPPORTS_WALL)
CHECK_CXX_COMPILER_FLAG("-Wextra" SUPPORTS_WEXTRA)
if (SUPPORTS_PEDANTIC)
set (CC_FLAGS "${CC_FLAGS} -pedantic")
endif()
# [omitted]... similarly for the rest of the flags.
set (CMAKE_CXX_FLAGS_RELEASE "-O3 ${CC_FLAGS}")
set (CMAKE_CXX_FLAGS_DEBUG "-O0 -g ${CC_FLAGS}")
# ************* DIFFERS HERE ************
ExternalProject_Add (
projectA
PREFIX "${projectA_prefix}"
GIT_REPOSITORY "[omitted]"
INSTALL_COMMAND ""
)
ExternalProject_Add (
google_benchmark
PREFIX "${GoogleBenchmarkPrefix}"
GIT_REPOSITORY "https://github.com/google/benchmark.git"
UPDATE_COMMAND ""
BUILD_COMMAND make benchmark
INSTALL_COMMAND ""
)