refboxのmakeエラー(2023/02/10版)

Ubuntu 20.04でのセットアップ(2022/12/09版)を試したら,refbox のmake でエラーが出たので,そのメモ.

/home/ryukoku/rcll-refbox/src/libs/rest-api/clips-rest-api/clips-rest-api.cpp: In member function ‘Fact llsfrb::ClipsRestApi::gen_fact(CLIPS::Fact::pointer&, bool)’:
/home/ryukoku/rcll-refbox/src/libs/rest-api/clips-rest-api/clips-rest-api.cpp:179:27: error: ISO C++ forbids converting a string constant to ‘char*’ [-Werror=write-strings]
  179 |   PrintFact(env_->cobj(), (const char *)"ProcPPForm", (struct fact *)fact->cobj(), FALSE, FALSE);
      |                           ^~~~~~~~~~~~~~~~~~~~~~~~~~
cc1plus: all warnings being treated as errors

とのこと.
また,gcc の警告が変わったのかなぁ.
「-Werror=write-strings」とのことなので,無視するには「-Wno-write-strings」らしい.
ということで,/etc/buildsys/config.mk に CFLAGS_BASE += -Wno-write-strings を追加.

tail etc/buildsys/config.mk 

  SYSLIBDIR32 = /usr/lib$(if $(wildcard /usr/lib32),32)
  PKGCONFIG = PKG_CONFIG_PATH=$(SYSLIBDIR32)/pkgconfig PKG_CONFIG_LIBDIR=$$PKG_CONFIG_PATH; pkg-config
  ARCH=i386
endif

CFLAGS_BASE += -Wno-write-strings

endif # __buildsys_config_mk_

次はfpermissive のエラーが出るけど,これは-fpermissiveの解決方法を参照.
/home/ryukoku/rcll-refbox/src/refbox/clips_logger.cpp:170:26: error: invalid conversion from ‘int (*)(void*, const char*’ to ‘int (*)(void*, char*)’ [-fpermissive]
log_router_query の型が異なっている(const char* と char* の違い)とのことで,log_router_query の定義を見てみると,

static int
#ifdef CLIPS_OLD_63_API
log_router_query(void *env, char *logical_name)
#else
log_router_query(void *env, const char *logical_name)
#endif

あ,CLIPS_OLD_63_API ですね.
/etc/buildsys/config.mk に追加しておこうっと.

CLIPS_OLD_63_API = TRUE

よし.通った.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

*