automake가 INSTALL을 덮어쓰는 것을 방지하는 방법은 무엇입니까?

automake가 INSTALL을 덮어쓰는 것을 방지하는 방법은 무엇입니까?

저는 사용자 정의 INSTALL파일을 사용하여 프로젝트를 진행하고 있습니다. 실행 automake --add-missing(더 정확하게는 autoreconf -i)을 실행하면 GNU 기본 INSTALL파일이 생성되고 이 파일로 파일을 덮어씁니다.

이 동작을 방지하려면 어떻게 해야 합니까? GNU INSTALL파일을 전혀 생성하지 않거나 다른 이름으로 생성하고 싶습니다 .

automake또한 생성될 수 있는 다른 파일을 비활성화하고 싶지 않습니다 .


편집 1:~에서automake수동:

--add-missing이 옵션을 지정 하면 automake파일의 범용 버전이 GNU General Public License [...]의 현재 버전 텍스트가 포함된 파일 INSTALL과 함께 추가됩니다. COPYING그러나 기존 COPYING 파일은 삭제되지 않습니다 automake.

기존 COPYING파일을 덮어쓰지 않는다고는 하지만, INSTALL파일의 내용에 대해서는 아무 말도 하지 않아서 무조건 덮어쓰게 될 것으로 보입니다.

편집 2:요청한 대로 이것이 제가 가지고 있던 configure.ac것과 우리가 프로젝트 에 실행한 Makefile.am것입니다 :autogen.shautoreconf

configure.ac:

AC_INIT([program name], [version number], [bug report], [short name], [url])
AC_CONFIG_SRCDIR([Main/Source/main.cpp])

AM_PROG_AS 
AC_CANONICAL_TARGET
AM_INIT_AUTOMAKE
AC_PROG_CC
AC_PROG_CXX

CFLAGS="$CFLAGS $SDL_CFLAGS "
LIBS="$LIBS $SDL_LIBS"
CPPFLAGS="$SDL_CFLAGS -DLINUX
          -DLOCAL_STATE_DIR=\\\"$sharedstatedir/<program name>\\\"
          -DDATADIR=\\\"$datadir\\\" -DUSE_SDL -DGCC"

AC_PROG_INSTALL
AC_PROG_RANLIB
AC_CONFIG_FILES(<list of Makefiles in subdirs>)
AC_OUTPUT

Makefile.am:

SUBDIRS = FooLib Main Bar Baz
EXTRA_DIST = LICENSING <and a bunch of unrelated files>

autogen.sh:

autoreconf -f -i

답변1

foreign에 옵션을 추가합니다 AM_INIT_AUTOMAKE. configure.ac이는 GNU 코딩 표준을 따르지 않는다는 것을 autotools에 알리고 Automake는 AUTHORS, COPYING, INSTALL, NEWS, README 및 ChangeLog 파일을 포함한 일반적인 GNU 프로젝트 텍스트 파일을 생성하지 않습니다. 이러한 파일을 자동으로 생성하는 것은 실제로 아무 소용이 없습니다. 언제든지 직접 만들 수 있습니다.

답변2

문제의 원인은 -fie --force로 표시되어 있다는 것입니다 autoreconf.

매뉴얼 페이지에는 "모든 파일을 더 이상 사용되지 않는 것으로 간주"라고 명시되어 있는데, 이는 약간 모호하여 처음에는 내 문제와 관련시킬 수 없었습니다.HTML이 수동으로 입력되었습니다.더욱 오해를 불러일으키는 점은 다음과 같습니다.

configure입력 파일보다 최신인 스크립트와 구성 헤더를 다시 생성할 수도 있습니다 ( configure.ac있는 경우에도 마찬가지 aclocal.m4).

이는 구성 스크립트에 대해서만 설명하지만 실제로는 표준 GNU 파일도 처리합니다.

그것은 밝혀, autoreconf -f실제로 호출되며 automake --force-missing"표준 파일 강제 업데이트"라는 보다 명확한 설명이 있습니다.HTML 수동 입력더 명확하게 하려면:

와 함께 사용하면 --add-missing표준 파일이 소스 트리에 이미 존재하더라도 다시 설치됩니다. […]

-f통화에서 레이블을 제거하면 autoreconf문제가 해결됩니다.

결론적으로:작업을 수행하는 사람은 autoreconf수동 항목을 작성할 수 없습니다. 이 일을 하는 사람은 automake할 수 있다.

관련 정보