저는 사용자 정의 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.sh
autoreconf
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
문제의 원인은 -f
ie --force
로 표시되어 있다는 것입니다 autoreconf
.
매뉴얼 페이지에는 "모든 파일을 더 이상 사용되지 않는 것으로 간주"라고 명시되어 있는데, 이는 약간 모호하여 처음에는 내 문제와 관련시킬 수 없었습니다.HTML이 수동으로 입력되었습니다.더욱 오해를 불러일으키는 점은 다음과 같습니다.
configure
입력 파일보다 최신인 스크립트와 구성 헤더를 다시 생성할 수도 있습니다 (configure.ac
있는 경우에도 마찬가지aclocal.m4
).
이는 구성 스크립트에 대해서만 설명하지만 실제로는 표준 GNU 파일도 처리합니다.
그것은 밝혀, autoreconf -f
실제로 호출되며 automake --force-missing
"표준 파일 강제 업데이트"라는 보다 명확한 설명이 있습니다.HTML 수동 입력더 명확하게 하려면:
와 함께 사용하면
--add-missing
표준 파일이 소스 트리에 이미 존재하더라도 다시 설치됩니다. […]
-f
통화에서 레이블을 제거하면 autoreconf
문제가 해결됩니다.
결론적으로:작업을 수행하는 사람은 autoreconf
수동 항목을 작성할 수 없습니다. 이 일을 하는 사람은 automake
할 수 있다.