質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CMake

CMakeはクロスプラットフォームで作動するオープンソースのビルドシステムです。コマンドライン又は組み込まれた開発環境で使うことができる元のmakefileとプロジェクトファイルを生成します。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

1682閲覧

Flow control statements are not properly nested. とエラーが発生する

sshhii

総合スコア1

CMake

CMakeはクロスプラットフォームで作動するオープンソースのビルドシステムです。コマンドライン又は組み込まれた開発環境で使うことができる元のmakefileとプロジェクトファイルを生成します。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2022/12/12 13:22

前提

CmakeでOpenspiel(https://github.com/deepmind/open_spiel/tree/master/open_spiel)
というコードをconfigureしようとしています。

実現したいこと

  • 下記のErrorとCall stuckを解消する

発生している問題・エラーメッセージ

Cmake/Build

1[cmake] CMake Error at abseil-cpp/CMake/AbseilHelpers.cmake:328 (endfunction): 2[cmake] Flow control statements are not properly nested. 3[cmake] Call Stack (most recent call first): 4[cmake] abseil-cpp/CMakeLists.txt:85 (include) 5[cmake] 6[cmake] 7[cmake] -- Configuring incomplete, errors occurred!

該当のソースコード

abseil(ハイフン)cpp/CMake/AbseilHelpers.cmake

1include(CMakeParseArguments) 2include(AbseilConfigureCopts) 3include(AbseilDll) 4 5 6if(NOT DEFINED ABSL_IDE_FOLDER) 7 set(ABSL_IDE_FOLDER Abseil) 8endif() 9function(absl_cc_library) 10 cmake_parse_arguments(ABSL_CC_LIB 11 "DISABLE_INSTALL;PUBLIC;TESTONLY" 12 "NAME" 13 "HDRS;SRCS;COPTS;DEFINES;LINKOPTS;DEPS" 14 ${ARGN} 15 ) 16 17 if(ABSL_CC_LIB_TESTONLY AND NOT BUILD_TESTING) 18 return() 19 endif() 20 21 if(ABSL_ENABLE_INSTALL) 22 set(_NAME "${ABSL_CC_LIB_NAME}") 23 else() 24 set(_NAME "absl_${ABSL_CC_LIB_NAME}") 25 endif() 26 27 set(ABSL_CC_SRCS "${ABSL_CC_LIB_SRCS}") 28 foreach(src_file IN LISTS ABSL_CC_SRCS) 29 if(${src_file} MATCHES ".*\\.(h|inc)") 30 list(REMOVE_ITEM ABSL_CC_SRCS "${src_file}") 31 endif() 32 endforeach() 33 34 if(ABSL_CC_SRCS STREQUAL "") 35 set(ABSL_CC_LIB_IS_INTERFACE 1) 36 else() 37 set(ABSL_CC_LIB_IS_INTERFACE 0) 38 endif() 39 40 if (${ABSL_BUILD_DLL}) 41 if(ABSL_ENABLE_INSTALL) 42 absl_internal_dll_contains(TARGET ${_NAME} OUTPUT _in_dll) 43 else() 44 absl_internal_dll_contains(TARGET ${ABSL_CC_LIB_NAME} OUTPUT _in_dll) 45 endif() 46 if (${_in_dll}) 47 # This target should be replaced by the DLL 48 set(_build_type "dll") 49 set(ABSL_CC_LIB_IS_INTERFACE 1) 50 else() 51 # Building a DLL, but this target is not part of the DLL 52 set(_build_type "dll_dep") 53 endif() 54 elseif(BUILD_SHARED_LIBS) 55 set(_build_type "shared") 56 else() 57 set(_build_type "static") 58 endif() 59 60 if((_build_type STREQUAL "static" OR _build_type STREQUAL "shared") 61 AND ABSL_ENABLE_INSTALL) 62 if(NOT ABSL_CC_LIB_TESTONLY) 63 if(absl_VERSION) 64 set(PC_VERSION "${absl_VERSION}") 65 else() 66 set(PC_VERSION "head") 67 endif() 68 foreach(dep ${ABSL_CC_LIB_DEPS}) 69 if(${dep} MATCHES "^absl::(.*)") 70 if(PC_DEPS) 71 set(PC_DEPS "${PC_DEPS},") 72 endif() 73 set(PC_DEPS "${PC_DEPS} absl_${CMAKE_MATCH_1} = ${PC_VERSION}") 74 endif() 75 endforeach() 76 foreach(cflag ${ABSL_CC_LIB_COPTS}) 77 if(${cflag} MATCHES "^(-Wno|/wd)") 78 # These flags are needed to suppress warnings that might fire in our headers. 79 set(PC_CFLAGS "${PC_CFLAGS} ${cflag}") 80 elseif(${cflag} MATCHES "^(-W|/w[1234eo])") 81 # Don't impose our warnings on others. 82 else() 83 set(PC_CFLAGS "${PC_CFLAGS} ${cflag}") 84 endif() 85 endforeach() 86 FILE(GENERATE OUTPUT "${CMAKE_BINARY_DIR}/lib/pkgconfig/absl_${_NAME}.pc" CONTENT "\ 87prefix=${CMAKE_INSTALL_PREFIX}\n\ 88exec_prefix=\${prefix}\n\ 89libdir=${CMAKE_INSTALL_FULL_LIBDIR}\n\ 90includedir=${CMAKE_INSTALL_FULL_INCLUDEDIR}\n\ 91\n\ 92Name: absl_${_NAME}\n\ 93Description: Abseil ${_NAME} library\n\ 94URL: https://abseil.io/\n\ 95Version: ${PC_VERSION}\n\ 96Requires:${PC_DEPS}\n\ 97Libs: -L\${libdir} $<JOIN:${ABSL_CC_LIB_LINKOPTS}, > $<$<NOT:$<BOOL:${ABSL_CC_LIB_IS_INTERFACE}>>:-labsl_${_NAME}>\n\ 98Cflags: -I\${includedir}${PC_CFLAGS}\n") 99 INSTALL(FILES "${CMAKE_BINARY_DIR}/lib/pkgconfig/absl_${_NAME}.pc" 100 DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") 101 endif() 102 endif() 103 104 if(NOT ABSL_CC_LIB_IS_INTERFACE) 105 if(_build_type STREQUAL "dll_dep") 106 # This target depends on the DLL. When adding dependencies to this target, 107 # any depended-on-target which is contained inside the DLL is replaced 108 # with a dependency on the DLL. 109 add_library(${_NAME} STATIC "") 110 target_sources(${_NAME} PRIVATE ${ABSL_CC_LIB_SRCS} ${ABSL_CC_LIB_HDRS}) 111 absl_internal_dll_targets( 112 DEPS ${ABSL_CC_LIB_DEPS} 113 OUTPUT _dll_deps 114 ) 115 target_link_libraries(${_NAME} 116 PUBLIC ${_dll_deps} 117 PRIVATE 118 ${ABSL_CC_LIB_LINKOPTS} 119 ${ABSL_DEFAULT_LINKOPTS} 120 ) 121 122 if (ABSL_CC_LIB_TESTONLY) 123 set(_gtest_link_define "GTEST_LINKED_AS_SHARED_LIBRARY=1") 124 else() 125 set(_gtest_link_define) 126 endif() 127 128 target_compile_definitions(${_NAME} 129 PUBLIC 130 ABSL_CONSUME_DLL 131 "${_gtest_link_define}" 132 ) 133 134 elseif(_build_type STREQUAL "static" OR _build_type STREQUAL "shared") 135 add_library(${_NAME} "") 136 target_sources(${_NAME} PRIVATE ${ABSL_CC_LIB_SRCS} ${ABSL_CC_LIB_HDRS}) 137 target_link_libraries(${_NAME} 138 PUBLIC ${ABSL_CC_LIB_DEPS} 139 PRIVATE 140 ${ABSL_CC_LIB_LINKOPTS} 141 ${ABSL_DEFAULT_LINKOPTS} 142 ) 143 else() 144 message(FATAL_ERROR "Invalid build type: ${_build_type}") 145 endif() 146 147 set_property(TARGET ${_NAME} PROPERTY LINKER_LANGUAGE "CXX") 148 149 target_include_directories(${_NAME} 150 PUBLIC 151 "$<BUILD_INTERFACE:${ABSL_COMMON_INCLUDE_DIRS}>" 152 $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}> 153 ) 154 target_compile_options(${_NAME} 155 PRIVATE ${ABSL_CC_LIB_COPTS}) 156 target_compile_definitions(${_NAME} PUBLIC ${ABSL_CC_LIB_DEFINES}) 157 158 if(ABSL_CC_LIB_PUBLIC) 159 set_property(TARGET ${_NAME} PROPERTY FOLDER ${ABSL_IDE_FOLDER}) 160 elseif(ABSL_CC_LIB_TESTONLY) 161 set_property(TARGET ${_NAME} PROPERTY FOLDER ${ABSL_IDE_FOLDER}/test) 162 else() 163 set_property(TARGET ${_NAME} PROPERTY FOLDER ${ABSL_IDE_FOLDER}/internal) 164 endif() 165 166 if(ABSL_PROPAGATE_CXX_STD) 167 if(POLICY CMP0025) 168 cmake_policy(SET CMP0025 NEW) 169 target_compile_features(${_NAME} PUBLIC cxx_std_11) 170 else() 171 set_property(TARGET ${_NAME} PROPERTY CXX_STANDARD ${ABSL_CXX_STANDARD}) 172 set_property(TARGET ${_NAME} PROPERTY CXX_STANDARD_REQUIRED ON) 173 endif() 174 175 if(ABSL_ENABLE_INSTALL) 176 set_target_properties(${_NAME} PROPERTIES 177 OUTPUT_NAME "absl_${_NAME}" 178 SOVERSION "2111.0.0" 179 ) 180 endif() 181 else() 182 add_library(${_NAME} INTERFACE) 183 target_include_directories(${_NAME} 184 INTERFACE 185 "$<BUILD_INTERFACE:${ABSL_COMMON_INCLUDE_DIRS}>" 186 $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}> 187 ) 188 189 if (_build_type STREQUAL "dll") 190 set(ABSL_CC_LIB_DEPS abseil_dll) 191 endif() 192 193 target_link_libraries(${_NAME} 194 INTERFACE 195 ${ABSL_CC_LIB_DEPS} 196 ${ABSL_CC_LIB_LINKOPTS} 197 ${ABSL_DEFAULT_LINKOPTS} 198 ) 199 target_compile_definitions(${_NAME} INTERFACE ${ABSL_CC_LIB_DEFINES}) 200 201 if(ABSL_PROPAGATE_CXX_STD) 202 target_compile_features(${_NAME} INTERFACE cxx_std_11) 203 204 # (INTERFACE libraries can't have the CXX_STANDARD property set, so there 205 # is no legacy behavior else case). 206 endif() 207 endif() 208 209 if(NOT ABSL_CC_LIB_TESTONLY AND ABSL_ENABLE_INSTALL) 210 install(TARGETS ${_NAME} EXPORT ${PROJECT_NAME}Targets 211 RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} 212 LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} 213 ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} 214 ) 215 endif() 216 add_library(absl::${ABSL_CC_LIB_NAME} ALIAS ${_NAME}) 217#ここがエラー箇所です 218endfunction() 219#ここがエラー箇所です

試したこと

endfunctionの中身を明記してみました。

補足情報(FW/ツールのバージョンなど)

vscode 1.74.0
windows_NT x64
コンパイラ:Ninja(最新)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

endif()が抜けていました。すいません。

投稿2022/12/16 15:00

sshhii

総合スコア1

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問