라이브러리 링크 |
- '-lpopt' 옵션을 지정해 실행파일을 생성해야함( -l popt ) |
명령줄 옵션
- 명령줄에 나열된 인수는 두 종류로 분류
- 하나는 명령이 처리할 대상인 데이터
- 다른 하나는 명령의 동작을 지정하는데에 이용
명령줄 문자열 예
ex) gcc list0612A.c -o list0612A
=> gcc(명령어) list0612A.c(처리 대상) -o(옵션) list0612A(옵션의 인수)
옵션 지정 예
- 보통 '-h'나 '-?', '--help', '--usage' 같은 옵션
=> 간단한 도움말이나 명령의 사용법을 표시하는데 이용
- '--version' 을 지정했을 때 버전 번호를 표시하게 구현하는 것이 일반적으로 약속처럼 되어 있음
옵션 해석 |
- 프로그램에서 옵션을 해석하는 법 - 명령줄 옵션을 해석할 때는 'getopt()'와 'getopt_long()'을 사용 - 이들 함수가 표준 C 라이브러리에 포함되므로 따로 패키지를 준비할 필요는 없음 => #include <unistd.h> |
짧은 옵션 |
-'-(하이픈)'에 이어서 영문자, 숫자, 기호 단일 자로 나타내는 옵션 형식 - gcc 옵션에서 '-c' 와 '-o'가 짧은 옵션에 해당함 - '-c' 옵션은 그 자제로 완결돼 인수가 필요하지 않음 - 생성할 실행 파일의 이름을 지정하는 '-o' 옵션은 입수가 필요함 - 옵션의 인수는 옵션 문자에 바로 붙여서 지정하거나 공백으로 구별해서 지정 |
긴 옵션 |
- '--help' 처럼 '--(하이픈 두 개)'에 이어서 단어로 표현하는 옵션 형식 - 긴 옵션의 인수는 '--longopt=argument' 처럼 '=' 로 연결해 지정하는 것이 관례 |
옵션 해석 라이브러리 - popt |
- 'popt' 라이브러리는 'getopt_long()' 함수를 대신할 강력한 옵션 해석 도구를 제공 - 'libpopt-dev' 패키지를 설치해야함 ( sudo apt-get install libpopt-dev ) |
옵션 해석 라이브러리 - popt 예제 |
|||||||||||||||||||||||
#include <popt.h> |
|||||||||||||||||||||||
- main() 의 인수에 const 추가 => 그 이유는 'poptSetContext()' 가 요구하는 형과 일치시키기 위해서 한 것임(굳이 할 필요는...)
struct poptOption optionTable[] = { |
그 밖의 수정 |
- 'poptOption' 구조체에서 옵션을 정의했다면 'poptGetContext()' 함수로 'popt'에 정보를 전달함 - 'poptSetOtherOptionHelp()' 함수는 자동 생성되는 도움말에 추가 정보를 주는 함수 - 'getopt_long()' 대신 'popGetNextOpt()' 로 변경 - 도움말이 자동으로 작성되므로 함수 'usage()' 같은 도움말 표시 함수를 직접 준비할 필요가 없어짐 - 옵션 인수가 자동으로 설정되므로 case 'n': 의 처리는 아무것도 하지 않아도 됨 |
'프로그래밍 정리 > Ubuntu - C' 카테고리의 다른 글
[Ubuntu - 우분투 - C] GLib 를 이용한 데이터 구조 처리(list, array, tree 등등에 쓰임) - libglib-2.0 (0) | 2015.05.20 |
---|---|
[Ubuntu - 우분투 - C] pkg-config - 라이브러리 이용, 자동으로 컴파일 옵션 지정 (0) | 2015.05.17 |
[Ubuntu - 우분투 - C] 컴파일 에러 - undefined reference to (0) | 2015.05.16 |
[Ubuntu - 우분투 - C] 명령줄 옵션(2) - 긴 옵션(getpot_long) (0) | 2015.05.15 |
[Ubuntu - 우분투 - C] 명령줄 옵션(1) - 짧은 옵션(getopt) (0) | 2015.05.15 |