wxWidgets compile on MinGW

MyTcl의 wxWidgets을 2.8.11 버전으로 업데이트한다.
컴파일 방법은 아래와 같이한다.

configure.in 파일을 열어 -mthreads 로 검색해서 다음과 같이 수정한다.

LDFLAGS="$LDFLAGS -mthreads" --> LDFLAGS="$LDFLAGS -mthreads -Wl,--enable-auto-import"
CFLAGS="-mthreads $CFLAGS" --> CFLAGS="-mthreads -Wl,--enable-auto-import $CFLAGS"

를 추가한다. (gcc 4.x버전에서만…)

이제 컴파일한다.

./configure --prefix=/works/release/wxwidgets --with-zlib=builtin --with-libpng=builtin --with-libjpeg=builtin --with-libtiff=builtin --with-expat=builtin --with-regex --disable-shared
make; make install

–enable-auto-import

MinGW의 gcc 4.x 버전으로 컴파일시 링크타임에 아래와 같이 에러가 나타나면,

warning: auto-importing has been activated without –enable-auto-import specified on the command line. This should work unless it involves constant data structures referencing symbols from auto-imported DLLs.

아래와 같이 옵션을 추가해준다.

gcc의 링크 타임에서는 -Wl,—enable-auto-import를 ld에서는 –enable-auto-import 만을 추가한다.

libsigc++

홈페이지: http://libsigc.sourceforge.net/

libsigc++은 콜백 시스템을 제공하는 c++용 라이브러이다.

libsigc++ implements a typesafe callback system for standard C++. It allows you to define signals and to connect those signals to any callback function, either global or a member function, regardless of whether it is static or virtual.

It also contains adaptor classes for connection of dissimilar callbacks and has an ease of use unmatched by other C++ callback libraries. Libsigc++ is licensed under the GNU Library General Public License, LGPL.

다운로드: 2.2.4, 2.2.8

/* Copyright 2003, The libsigc++ Development Team
 *
 *  Assigned to the public domain.  Use as you wish without
 *  restriction.
 */

#include <iostream>
#include <string>

#include <sigc++/sigc++.h>

SIGC_USING_STD(cout)
SIGC_USING_STD(endl)
SIGC_USING_STD(string)

void on_print(const std::string& str)
{
  std::cout << str;
}

int main()
{
  sigc::signal<void, const std::string&> signal_print;
  
  signal_print.connect( sigc::ptr_fun(&on_print) );
  
  signal_print.emit("hello world\n");

  return 0;
}

GMP

홈페이지: http://gmplib.org/

gmplogo2

빠른 큰(제한이 없는) 수치 연산 라이브러리
tcl을 포함한 대부분의 스크립트 언어에 채용이 되었다.

GMP is a free library for arbitrary precision arithmetic, operating on signed integers, rational numbers, and floating point numbers. There is no practical limit to the precision except the ones implied by the available memory in the machine GMP runs on. GMP has a rich set of functions, and the functions have a regular interface.

The main target applications for GMP are cryptography applications and research, Internet security applications, algebra systems, computational algebra research, etc.

GMP is carefully designed to be as fast as possible, both for small operands and for huge operands. The speed is achieved by using fullwords as the basic arithmetic type, by using fast algorithms, with highly optimised assembly code for the most common inner loops for a lot of CPUs, and by a general emphasis on speed.

GMP is faster than any other bignum library. The advantage for GMP increases with the operand sizes for many operations, since GMP uses asymptotically faster algorithms.

다운로드: 4.3.1, 5.0.1

Argtable

홈페이지: http://argtable.sourceforge.net/

커맨드 라인 기반 어플리케이션의 다양한 옵션 지원 라이브러리.
이와 비슷한 라이브러리로는 getopt가 있다.

Argtable is an ANSI C library for parsing GNU style command line options with a minimum of fuss. It enables a program’s command line syntax to be defined in the source code as an array of argtable structs. The command line is then parsed according to that specification and the resulting values are returned in those same structs where they are accessible to the main program. Both tagged (-v, –verbose, –foo=bar) and untagged arguments are supported, as are multiple instances of each argument. Syntax error handling is automatic and the library also provides the means for generating a textual description of the command line syntax, as in the following example:

myprog [-lRv] [-k <int>] [-D MACRO]... [-o <output>] [--help] [--version] <file> [<file>]...
-l, -L       list files
-R         recurse through subdirectories
-k, --scalar=<int>            define scalar value k (default is 3)
-D, --define=MACRO        macro definitions
-o <output>         output file (default is "-")
-v, --verbose, --debug          verbose messages
--help           print this help and exit
--version          print version information and exit
<file>       input file(s)

다운로드: 2.11, 2.13