[ C++�ŊJ�� ]
�ڎ�
�@MPC�FThe Makefile, Project, and Workspace Creator�̗��B�}���`�v���b�g�t�H�[���Ή��̃v���W�F�N�g�ɂ����āA�����̃r���h�c�[���ɑΉ����邽�߂ɁA�e�r���h�c�[���ɑΉ������ݒ�t�@�C����������������c�[���ł��BMPC�p�̃v���W�F�N�g�ݒ���L�q����ƁAGNU Make�pMakefile�ABorland Make�pMakefile�Anmake�pMakefile�AMicrosoft Visual C++6.0�`8.0�̃v���W�F�N�g�t�@�C���AMicrosoft embedded Visual C++3.0/4.0�p�v���W�F�N�g�t�@�C���AGNU Automake�p�t�@�C���A�Ȃǂ̊e��r���h�c�[���p�ݒ�t�@�C�������邱�Ƃ��ł��܂��B
�@MPC���̂�Perl����ŋL�q����Ă���A���s�ɂ�Perl�����삷�邱�Ƃ��K�v�ł��BUNIX�n��OS�Ȃ�Α��Perl�����p�\�ƂȂ��Ă��܂��BWindows�̏ꍇ�́APerl���Ƃ���Cygwin��������Active Perl���C���X�g�[������̂���ʓI�ł��傤�B
�@����MPC�c�[���́AACE�ƌĂ������E�v���Z�X�ԒʐM���J�v�Z�������I�u�W�F�N�g�w���l�b�g���[�N�v���O���~���O�@�\�����I�[�v���\�[�X�E�t���[�����[�N���i�̃r���h�p�Ɏg�p����Ă��܂��B
MPC�c�[���́AACE�����TAO�iThe ACE ORB)�̏��p�T�|�[�g���s���Ă����OCI�Ђ��J���E�������Ă��܂��B
��L�y�[�W�̍������j���[[Download]��H��ƁAMPC�̃A�[�J�C�u���_�E�����[�h�ł��܂��B
��ZIP�`���̃A�[�J�C�u�ł�����\�ł��B
���肵��MPC�A�[�J�C�u��W�J���܂��BMPC�Ƃ����f�B���N�g���̉��ɓW�J����܂��B���ϐ�PATH�ɂ���MPC�f�B���N�g����lj����܂��B
�ȉ���2�̃R�}���h���g�p�ł���悤�ɂȂ�܂��B
1.�́A��{�I�ɂ͈�̎��s�t�@�C���܂��̓��C�u�����t�@�C�����쐬���邽�߂́u�v���W�F�N�g�v�����邽�߂̃c�[���ł��B
2.�́A���[�N�X�y�[�X������c�[���ł��B���[�N�X�y�[�X�́A�����́u�v���W�F�N�g�v�܂��́u���[�N�X�y�[�X�v�𑩂˂�ݒ���L�q���܂��B
ex1�f�B���N�g����2�̃\�[�X�t�@�C���A1�̃w�b�_�t�@�C�����쐬���A����炩��1�̎��s�t�@�C�����r���h����ꍇ�̐ݒ�ł��B
src/ +-- Time.h +-- Time.cpp +-- main.cpp
MPC�̃v���W�F�N�g�ݒ�t�@�C�����L�q���܂��B
project(timemain) { exename = time_main } |
project�őS�̂��݂͂܂��B�v���W�F�N�g����()���ɋL�q���܂��B�v���W�F�N�g���͏ȗ��\�ŁA���̏ꍇ��()���ȗ����܂��B�ȗ�����MPC�t�@�C��������g���q.mpc�����������O���v���W�F�N�g���ƂȂ�܂��B
�r���h������s�t�@�C�������Aexename = �Ŏw�肵�܂��B���̗�ł�time_main�����s�t�@�C�����ƂȂ�܂��B�iWindows�̏ꍇ�̊g���q.exe�͏ȗ��j
�J�����g�E�f�B���N�g���ɂ���\�[�X�t�@�C���A�w�b�_�[�t�@�C�����f�t�H���g�Ńv���W�F�N�g�Ɏ�荞�܂�܂��B
��Ƃ���VC++ 7.1 (Visual Studio 2003)�̃r���h�t�@�C�������܂��B
ex1> mpc.pl -type vc71 timemain.mpc Generating vc71 output using time.mpc Generation Time: 0s ex1>
�ȉ���Visual C++ 7.1�p�v���W�F�N�g�t�@�C������������܂��B
���l�ɁA�ȉ��̎w��Ŋe��r���h�t�@�C������������܂��B
�R�}���h�I�v�V���� | ���������t�@�C�� | �Ώۃr���h�c�[�� |
---|---|---|
mpc.pl -type nmake timemain.mpc |
Makefile.timemain.mak |
nmake |
mpc.pl -type make timemain.mpc |
Makefile.timemain |
make |
mpc.pl -type automake timemain.mpc |
Makefile.timemain.am |
automake |
mpc.pl -type bmake timemain.mpc |
Makefile.timemain.bmak |
Borland make |
��-type�Ŏw��\�ȃI�v�V�����͌����_�ŁAautomake ,bds,bmake, cbx, em3, ghs, html, make, nmake, sle, vc6, vc7, vc71, vc8
��L�ł́Atimemain.mpc�t�@�C���Ɠ����f�B���N�g���ɂ���\�[�X�t�@�C���A�w�b�_�[�t�@�C�����v���W�F�N�g�Ɏ�荞�܂�܂����B������A�\�[�X�t�@�C���A�w�b�_�[�t�@�C�����w�肵�����ꍇ�́A�ȉ��̂悤�ɋL�q���܂��B
project(timemain) { exename = time_main Source_Files { Time.cpp main.cpp } Header_Files { Time.h } } |
Source_Files { }�̒��ɁA�r���h�Ώۂ̃\�[�X�t�@�C�����L�q���܂��B
Header_Files { }�̒��ɁA�r���h�Ώۂ̃w�b�_�[�t�@�C�����L�q���܂��B
�R���p�C���I�v�V�������v���W�F�N�g�t�@�C���ɋL�q���Đ������邱�Ƃ��ł��܂��B���ӓ_�́A�R���p�C����OS�ɌŗL�Ȑݒ�Ƌ��ʂȐݒ肪����̂ŁA�������g�������邱�Ƃł��B
project(timemain) { exename = time_main includes += /lib/boost_1_34_1 macros += _CRT_SECURE_NO_WARNINGS libpaths += /lib/boost_1_34_1/lib specific(vc9) { lit_libs += boost_date_time-vc90-mt } else { lit_libs += boost_date_time } Source_Files { Time.cpp main.cpp } Header_Files { Time.h } } |
includes) �R���p�C���̃C���N���[�h�p�X���` macros) �R���p�C���̃f�t�@�C����` libpaths) �����J�̃��C�u�����p�X���` specific(vc)) VC++9�̂Ƃ��� lit_libs) �����N�E���C�u���� |
�\�[�X�t�@�C���̂���f�B���N�g���Ƃ͕ʂɎ��s�t�@�C��������f�B���N�g�����w�肷�邱�Ƃ��ł��܂��Bexeout�ɏo�͐�f�B���N�g�����L�q���܂��B
project(timemain) { exename = time_main exeout = ../bin : } |
ex1�f�B���N�g���ɂ���\�[�X�t�@�C���A�w�b�_�t�@�C�����쐬���A����炩��1�̋��L���C�u�����t�@�C�����r���h����ꍇ�̐ݒ�ł��B
project(timelib) { sharedname = time Source_Files { Time.cpp } Header_Files { Time.h } } |
�r���h���鋤�L���C�u�����t�@�C�������Asharedname = �Ŏw�肵�܂��B�g���q��UNIX�n�Ŏg�p����t�@�C�����擪��"lib"�͋L�q���܂���B���̗�ł́AVC++�v���W�F�N�g�t�@�C���ł�time.dll�i�܂���timed.dll�j�����L���C�u�����t�@�C�����ƂȂ�܂��Bmake�t�@�C���ł́Alibtime.so�����L���C�u�����t�@�C�����ƂȂ�܂��B
�\�[�X�t�@�C���̂���f�B���N�g���Ƃ͕ʂɃ��C�u�����t�@�C��������f�B���N�g�����w�肷�邱�Ƃ��ł��܂��Blibout�ɏo�͐�f�B���N�g�����L�q���܂��B
project(timelib) { sharedname = time libout = ../lib : } |
�@������Ƃ����v���O���������ꍇ�Ampc�t�@�C���̋L�q����ʓ|�ȏꍇ������܂��B���̂Ƃ��́Ampc�t�@�C�����L�q���Ȃ��Ă��AMPC�̃f�t�H���g�̓���őΏۂ̃r���h�c�[���̃v���W�F�N�g�t�@�C���������邱�Ƃ��ł��܂��B
�@main�����`�����\�[�X�t�@�C�����܂܂�Ă���ꍇ�A���̃f�B���N�g���ɂ���\�[�X�t�@�C����S���R���p�C���E�����N���Ĉ�̎��s�t�@�C��������v���W�F�N�g�����܂��B�v���W�F�N�g���́A���̃f�B���N�g�����Ɋ�Â��A���s�t�@�C�����́Amain�����`�����\�[�X�t�@�C�����Ɋ�Â��܂��B
�@main�����`�����\�[�X�t�@�C�����܂܂�Ă��Ȃ��ꍇ�A���̃f�B���N�g���ɂ���\�[�X�t�@�C����S���R���p�C���E�����N���Ĉ�̋��L���C�u�����t�@�C��������v���W�F�N�g�����܂��B
�@�Ȃ��A�C���N���[�h�p�X�A���C�u�����p�X�A�����N���郉�C�u�������Ȃǂ́Ampc.pl�̃R�}���h���C������-value_project�I�v�V�����Ŏw��ł��܂����A�����܂ł���Ȃ�f����mpc�t�@�C�����L�q����ׂ��ł��B
�e�탉�C�u�������g�����v���W�F�N�g�̏ꍇ�A�lj��̃C���N���[�h�p�X�A���C�u�����p�X�A�����N���郉�C�u�����A�r���h�O���Ɏ��s����R�}���h�Ȃǂ��w�肷��K�v������܂��B
MPC�͕W����Boost���C�u�������g�����߂̐ݒ��ێ����Ă��܂��B�������f�t�H���g�ł�Boost�̐ݒ肪�����ɂȂ��Ă���̂ŁA�����L���ɂ���K�v������܂��B�L���ɂ���ɂ͂������̕��@������܂����A�����ł͂��̒�����Q�Љ�܂��B
1.�́Aglobal.features�t�@�C���̒��Ɂuboost = 0�v�̋L�q������̂ŁA������uboost = 1�v�ɏC�����܂��B
2.�́A�R�}���h���C����-features boost=1 ���w�肵�܂��B
�@�܂��́A�uboost = 1�v���L�q�����e�L�X�g�t�@�C��(��Fmyproj.features�j���쐬���A�R�}���h���C����-feature_file
myproj.features ���w�肵�܂��B
Boost���g�p����v���W�F�N�g��`�ŁAboost�̊��v���W�F�N�g���p������悤�ɋL�q���܂��B
project(timelib) : boost_base { sharedname = time } |
boost�̊��v���W�F�N�g�́A�����N���郉�C�u������ނɉ����ĕ����p�ӂ���Ă���̂ŁA�K�Ȃ��̂�I�����܂��B�������C�u�������g�p����Ƃ��́A���ꂼ��p������v���W�F�N�g�Ɏw�肵�܂��B
���v���W�F�N�g�� | ���v���W�F�N�g�� | ���v���W�F�N�g�� | |||
boost_base |
boost_program_options |
boost_test_exec_monitor |
|||
boost_date_time |
boost_python |
boost_thread |
|||
boost_filesystem |
boost_regex |
boost_unit_test_framework |
|||
boost_iostreams |
boost_serialization |
boost_wave |
|||
boost_prg_exec_monitor |
boost_signals |
�����boost�̊��v���W�F�N�g���g�p����ƁA�C���N���[�h�p�X�A���C�u�����p�X�A�����N���郉�C�u�������Ɉȉ��̊��ϐ����g�p����v���W�F�N�g����������܂��B
�v���W�F�N�g�����s����Ƃ��́A�����̊��ϐ����`���Ă����܂��B
rpm�p�b�P�[�W�ŃC���X�g�[������boost�́A/usr/include�̉���boost/������.hpp���u����A/usr/lib�̉���libboost-xxx���u����܂��B�܂��A���C�u��������libboost_regex.so�̂悤�Ƀo�[�W�����ԍ��̓t�@�C�����ɂ͕t���܂���B���������āA��L���ϐ���ݒ肵�Ă��Ȃ��Ă��A�R���p�C���E�����N���ʂ��Ă��܂��܂��B
�N���C�A���g�E�T�[�o�̃v���O�������쐬����Ƃ��ȂǁA�N���C�A���g�p���s�t�@�C���A�T�[�o�p���s�t�@�C���ƕ����̎��s�t�@�C��������ꍇ�̗�����Ă݂܂��B
�v���W�F�N�g�𑩂˂�f�B���N�g����csapp�Ƃ��āA���̃f�B���N�g���z����client�����server�f�B���N�g�����쐬���܂��B
csapp +--- client | +--- src | +--- client.cpp +--- server +--- src +--- server.cpp
client��server���ꂼ��̃f�B���N�g�����Ƀv���W�F�N�g�t�@�C�����L�q���܂��B
project(client) { exename = client Source_Files { client.cpp } } |
project(server) { exename = server Source_Files { server.cpp } } |
csapp�����Ƀ��[�N�X�y�[�X�t�@�C�����L�q���܂��B
workspace { } |
UNIX��bash���GNU Makefile������R�}���h���s����ȉ��Ɏ����܂��B
csapp$ mwc.pl -type make -recurse csapp.mwc Generating 'make' output using default input Generation Time: 0s csapp$
�����̃��C�u�����t�@�C������Ȃ�N���X���C�u�������\�z����f�B���N�g���\���̏ꍇ�̗�����Ă݂܂��B
���̗�ł̃f�B���N�g���\���z�莖���͈ȉ��̂Ƃ���ł��B
�ȉ���ABC���C�u�����̃f�B���N�g���\����MPC�̃��[�N�X�y�[�X�t�@�C���E�v���W�F�N�g�t�@�C�����L�q���܂��B
abclib | +--- include | +--- abc | +--- alfa | +--- bravo | +--- charlie +--- src | +--- abc | +--- alfa | | +--- alfa.mpc | +--- bravo | | +--- bravo.mpc | +--- charlie | +--- charlie.mpc +--- abclib.mwc | +--- lib | +--- makeinclude +--- abclib.mpb
makeinclude�ɂ́A�eMPC�t�@�C���ŋ��ʂ���ݒ���L�q�������ʃt�@�C����u���܂��B
project(alfa) : abclib { sharedname = alfa Source_Files { Alfa.cpp } Header_Files { Alfa.h } } |
����alfa���C�u���������p�v���W�F�N�g�t�@�C���́Aabclib�Ƃ������v���W�F�N�g�̐ݒ���p�����܂��B
���I���L���C�u�����E�t�@�C���Ƃ���alfa�Ƃ�������Ő������܂��BUNIX�n�Ȃ�libalfa.so�ƂȂ�܂��B
���̃v���W�F�N�g���\������\�[�X�t�@�C���́AAlfa.cpp�ŁA�w�b�_�[�t�@�C����Alfa.h�ł��B
���w�b�_�[�t�@�C��Alfa.h�͕ʃf�B���N�g���ɂ���̂ŁA���̃t�@�C�����݂̂̋L�q�ł悢�̂��ǂ����͗v�����B
project { includes += $(ABCLIB_ROOT)/include libout = $(ABCLIB_ROOT)/lib specific(make) { compile_flags += -Wall } } |
���J�w�b�_�[�t�@�C���̓\�[�X�Ƃ͕ʃf�B���N�g���ɒu�����߁A�R���p�C�����ɂ̓C���N���[�h�p�X�̎w�肪�K�v�ł��B���̃C���N���[�h�p�X�̓v���W�F�N�g�ŋ��ʂȂ̂ŁA�e�v���W�F�N�g�t�@�C���ɃR�s�[���y�[�X�g������͋��ʃt�@�C���Ɉꌳ�����ׂ��ł��B
���l�Ƀ��C�u�����p�X�����ʂł��B
�܂��A�R���p�C���I�v�V�����ŋ��ʂ�����̂������ɋL�ڂ��܂��B
workspace { } |
UNIX��bash���GNU Makefile������R�}���h���s����ȉ��Ɏ����܂��B
abclib$ mwc.pl -type make -include ./makeinclude abclib.mwc Generating 'make' output using abclib.mwc Generation Time: 0s abclib$
-type�I�v�V������make�A���Ȃ킿GNUmake�pMakefile�����܂��B
�empc�t�@�C���܂��͋��ʂ�mpb�t�@�C���ɁA�v���W�F�N�g�g�b�v�f�B���N�g����\��ABCLIB_ROOT�ϐ����g�p����include�f�B���N�g�������w�肵�Ă��܂��B-relative�I�v�V�������w�肵�Ȃ���A���̕ϐ��͂��̂܂ܐ��������Makefile���̃v���W�F�N�g�t�@�C���ɕϐ��̂܂ܔ��f����܂��B���̂��߁A�r���h���s���ɂ��̊��ϐ����Z�b�g����K�v������܂��B
CPPFLAGS = $(PICFLAGS) $(GENFLAGS) -Wall -D_REENTRANT -I"$(ABCLIB_ROOT)/include" |
����A-relative�I�v�V�����ŕϐ��̓��e���w�肵�Ă����ƁA���̕ϐ���Makefile���̃v���W�F�N�g�t�@�C���ł͑��f�B���N�g���ɓW�J����܂��B
abclib$ mwc.pl -type make -include ./makeinclude -relative ABCLIB_ROOT=. abclib.mwc Generating 'make' output using abclib.mwc Generation Time: 0s abclib$
CPPFLAGS = $(PICFLAGS) $(GENFLAGS) -Wall -D_REENTRANT -I"../../../include" |
CORBA��IDL�R���p�C����AQt��MOC�R���p�C���ȂǁA����̃c�[���ŗL�̃R�}���h�����s����J�X�^���R�}���h���`���܂��B
Define_Custom�����g���āAMPC�̃v���W�F�N�g�t�@�C�����ɒ�`���܂��B
ACE/TAO�̏ꍇ�AMPC���W���őg�ݍ��܂�Ă���̂ŁAACE/TAO��MPC���g���ƃ��[�U���ŃJ�X�^���R�}���h���`�����ɍς݂܂��B�������AMPC��ʂɃC���X�g�[�����Ă�����AACE/TAO�̃p�b�P�[�W�ł��g�p����MPC���܂܂�Ă��Ȃ������肵���ꍇ�A���O��IDL�R���p�C���̃J�X�^���R�}���h���`������@��m���Ă���ƑΏ����e�Ղł��B
Define_Custom(IDL) { automatic = 1 command = tao_idl inputext = .idl source_pre_extension = C, S header_pre_extension = C, S inline_pre_extension = C, S source_outputext = .cpp, .cxx, .cc, .C header_outputext = .h, .hpp, .hxx, .hh inline_outputext = .inl keyword idlflags = commandflags } |
IDL_Files�̃J�X�^���R�}���h��`�B automatic=1�w��ŁAIDL_Files�Ŏw�肵���t�@�C������̐������́A�����I��Source_Files, Header_Files, Template_Files�Ȃǂɒlj�����B �J�X�^���R�}���h��tao_idl�B �Ώۓ��̓t�@�C���̊g���q��.idl�B �����\�[�X�t�@�C���̊g���q���O�ɂ�C�����S���t�� �����w�b�_�t�@�C���̊g���q���O�ɂ�C�����S���t�� �����C�����C���t�@�C���̊g���q���O�ɂ�C�����S���t�� �����\�[�X�t�@���̊g���q �����w�b�_�t�@�C���̊g���q �����C�����C���t�@�C���̊g���q IDL�J�X�^���R�}���h�̃R�}���h�I�v�V�����́Aidlflags�Ŏw��\�Ƃ���B |
tao_idl�̐������ɍ��킹�āAsource_pre_extension�����w�肵�Ă��܂��B���̖��O�̃��[����Makefile���o�͂���܂��B
���L�j���ۂ�ACE/TAO�Ɋ܂܂��J�X�^����`�͂����ƕ��G�ɂȂ��Ă��܂��B
MPC���g���ɂ������ďo���킵�����Ƃ��̉����ɂ��Ẵ����ł��B
Cygwin���ł́A���C�u����libdl������܂���BCygwin�ł́Alibdl���������libcygwin�Ɋ܂܂�Ă���̂ŁA/usr/lib/libcygwin.a�ɃV���{���b�N�����N���쐬������@�ʼn�����܂��B
$ cd /usr/lib $ ln -s libcygwin.a libdl.a $
VC++�ł́A�v���W�F�N�g�ݒ�Ɂu�f�o�b�O�r���h�v�A�u�����[�X�r���h�v�̍\������`����A�r���h���ɂǂ���Ńr���h���邩��I�����邱�Ƃ��ł��܂��B
����Amake�iMakefile�j�v���W�F�N�g�ł́A�f�t�H���g�ł͍œK���I�v�V����"-O"���w�肳��A�f�o�b�O�I�v�V����"-g"�͎w�肳��܂���B
���������Makefile.xxx �̒��ňȉ��̕ϐ��ŃI�v�V��������`����܂��B
LIBSUFFIX = GENFLAGS = -O |
���̐ݒ�́AMPC��make�p�e���v���[�g�ݒ�t�@�C���ɒ�`����Ă�����̂ł��B
... configurations = Release ... Debug { lib_modifier = d genflags = -g } Release { optimize = 1 genflags = -O } |
Makefile�����錳�l�^��`�ł���configurations������Release�ɐݒ肳��Ă���̂ŁA���������Makefile��Release�Œ�`����Ă���genflags�̒l���K�p����܂��B
mwc.pl�R�}���h�����s����Ƃ��ɁA-value_template�I�v�V�������w�肵�āAconfigurations�������㏑������
$ mwc.pl -type make -value_template configurations=Debug ... $
���������Makefile.xxx�͈ȉ��ɂȂ�܂��i�����j�B
LIBSUFFIX = d GENFLAGS = -g |
�f�o�b�O�r���h�ƃ����[�X�r���h�ƕp�ɂɎg��������ꍇ�A�s�xMPC��Makefile���������͎̂�Ԃł��B�����ŁAMakefile�ɂ̓f�o�b�O�r���h�A�����[�X�r���h�o���̐ݒ�����āAmake�����s����Ƃ��Ƀf�o�b�O�r���h�������[�X�r���h�����w��ł���悤�ɂ��܂��B
$ mwc.pl -type make -value_template "configurations=Debug Release" ... $
���������Makefile.xxx�͈ȉ��ɂȂ�܂��i�����j�Bmake�}�N���ϐ�CFG�̒l�ɉ����āA�f�o�b�O�r���h�������[�X�r���h�����ւ�����悤�ɂȂ��Ă��܂��B
CFG = Debug ifeq ($(CFG), Debug) ... LIBSUFFIX = d GENFLAGS = -g ... endif ifeq ($(CFG), Release) ... LIBSUFFIX = GENFLAGS = -O ... endif |
$ make // Debug�r���h���s���� $ make CFG=Debug // Debug�r���h���s���� $ make CFG=Release // �����[�X�r���h���s����
��L�ł́A�f�t�H���g�iCFG�ϐ����w�肵�Ȃ��ꍇ�j�ł̓f�o�b�O�r���h�ł����A�f�t�H���g�Ń����[�X�r���h�ɂ������ꍇ�́AMPC��-value_template�I�v�V������configurations=�̌�̕��т�ς��āA�f�t�H���g�ɂ������\�����ɏ����܂��B
$ mwc.pl -type make -value_template "configurations=Release Debug" ... $
CFG = Release ifeq ($(CFG), Release) ... endif ifeq ($(CFG), Debug) ... endif |
MPC���p�ӂ���GNU make�p��Makefile�ݒ�́A�f�o�b�O�r���h�������C�u�����́A�t�@�C������'d'���t���܂��B�i��Flibfoo.so�������[�X�r���h�ł���A���̃f�o�b�O�r���h��libfood.so�ƂȂ�j
������A�t�@�C�����͕ς������Ȃ��ꍇ�A�o�͐�f�B���N�g����ς��邱�ƂőΉ��ł�����@���l���Ă݂܂��B
�܂��Amakedll.mpt ���J�X�^�}�C�Y���܂��B
... configurations = Release Debug ... Debug { output_dir_ext = _debug genflags = -g } Release { output_dir_ext = _opt optimize = 1 genflags = -O } |
���ɁAmake.mpd���J�X�^�}�C�Y���܂��B
... SHTARGETDIR = <%if(dllout)%><%dllout%><%output_dir_ext%><%else%><%libout%><%output_dir_ext%> <%endif%><%slash%><%targetoutdir%> |
���̂Q�̃J�X�^�}�C�Y�����t�@�C����ǂݍ��܂��Amwc�����s���܂��B
$ mwc.pl -type make -template make2 -ti dll:make2dll -value_template \ "configurations=Release Debug" ...
�����N�I�v�V�����́Amake�̏ꍇ�A���������Makefile�̒���LDFLAGS=�Őݒ肳��܂��B�ʏ�̓����N���郉�C�u�����̃p�X�ƃ��C�u�����������f����܂����A���ɂ������N���Ɏw�肵�����I�v�V�������������ꍇ�A�����ɔ��f���邽�߁Alinkflags���w�肵�܂��B
project { specific(make) { linkflags += -pg } ... } |
Makefile�����邽�߂̐��`�ƂȂ�make.mpd�̒��ɁAlinkflags����`����Ă���Ύw�肷��悤�ɂȂ��Ă��܂��B
LDFLAGS =<%if(libpaths)%>...����...<%if(linkflags)%> <%linkflags%><%endif%>...�㗪 |
make�̐����Ɋւ���ݒ肪�����ꂽmakedll.mpt�ɂ́A�R���p�C����ނɂ���ăf�t�H���g��linkflags����`����Ă��܂��B
... SunCC { linkflags = -library=Cstd -library=Crun ... } acc { linkflags = -Wl,+s ... } |
Linux�ł�GCC�̏ꍇ�Alinkflags�͐ݒ肳��Ă��܂���B
Emacs��flymake���[�h��L���ɂ��Ă���Ƃ��AEmacs�̓\�[�X�t�@�C�����J�����ꏊ��make��check-syntax�^�[�Q�b�g�Ŏ��s���A�G���[�`�F�b�N���s���܂��B�����ŁAMPC�Ő�������Makefile��check-syntax�^�[�Q�b�g��lj�������@��T���܂����B
��q�̕ύX�Ή��Ŏ����ł��܂����B
$ export CUSTOM_TARGETS=check-syntax $
--- make.mpd.orig 2008-11-16 22:19:39.000000000 +0900 +++ make.mpd 2009-02-24 00:14:59.000000000 +0900 @@ -301,6 +301,9 @@ -$(RM) <%targetoutdir%><%obj_dir%> <%endif%> +check-syntax: + $(COMPILE.cc) $(EXPORTFLAGS) -Wall -Wextra -pedantic -fsyntax-only ${CHK_SOURCES} + <%if(prebuild)%> __prebuild__: @<%eval(prebuild)%> |
Makefile.xxx �̓e���v���[�g�t�@�C��make.mpd�����`���`���Ă���̂ŁA����Ƀ^�[�Q�b�g��lj����܂��B
���ϐ�CUSTOM_TARGETS�w��͖Y��Ă��܂���flymake�������ɂȂ�̂��ʓ|�Ȃ̂ŁAMPC�̒t�@�C�����̂��C�����Ă��܂��܂��B
--- MakeWorkspaceCreator.pm.orig 2008-11-16 22:19:39.000000000 +0900 +++ MakeWorkspaceCreator.pm 2009-02-24 00:04:56.000000000 +0900 @@ -23,7 +23,7 @@ # Data Section # ************************************************************ -my($targets) = 'clean depend generated realclean $(CUSTOM_TARGETS)'; +my($targets) = 'clean depend generated realclean check-syntax $(CUSTOM_TARGETS)'; |
Makefile�̓e���v���[�g�t�@�C���͂Ȃ��APerl�X�N���v�g��MakeWorkspaceCreator.pm�����ڐ������Ă���̂ŁAPerl�X�N���v�g���C�����܂��B
���̋L�q�́AMPC��FAQ�ɋL�ڂ���Ă�����̂ł����AMPC 3.6.0�Ŋm�F�����Ƃ���A�ȉ����L�q���Ă��L���ɂȂ�܂���B
workspace { cmdline += -value_template "configurations=Release Debug" -include $(HOME)/MPC } |
MPC�͐ݒ�t�@�C����ǂݍ��݂܂��B�f�t�H���g�ł́AMPC�̃f�B���N�g���ɂ���ݒ�t�@�C����ǂݍ��݂܂����A�v���W�F�N�g�ŗL�̐ݒ�t�@�C����ǂݍ��ނ悤�ɐݒ肵�Ă������ƂŁA�v���W�F�N�g�ŗL�̎w����s���܂��B
(1) $MPC_ROOT/config/base.cfg�t�@�C����V�K�ɍ쐬���A�ȉ����e���L�q����
$PROJECT_ROOT=$PROJECT_ROOT/MPC/config
(2) �v���W�F�N�g�̃f�B���N�g�������ϐ�PROJECT_ROOT�ɐݒ肷��
(3) $PROJECT_ROOT/MPC/config �f�B���N�g����MPC.cfg�t�@�C�����쐬����
�����ŁA���ϐ�PROJECT_ROOT�͖��O�͕ʂɉ��ł��\���܂���B
MPC.cfg�̏�����
default_type = make // �R�}���h���C���� -type make ���w��
�w��ł���ݒ�́A�ȉ�
command_line default_type dynamic_types includes logging main_functions verbose_ordering
�ڂ����́AMPC�̃h�L�������g�Q��
Source_Files {} ����`���āASource_Files����buildflags�ŌŗL�ɃR���p�C���I�v�V�������w�肵�܂��B
project(alfa) : abclib { sharedname = alfa Source_Files { buildflags += -finstrument-functions AlfaX.cpp } Source_Files { AlfaY.cpp AlfaZ.cpp } } |
�����̃v���W�F�N�g�����e���郏�[�N�X�y�[�X���\�z����ہA�v���W�F�N�g�̃r���h���Ԃ�MPC�����ˑ��i�A���t�@�x�b�g���ɂ݂���j�ł��B�����ŁA���C�u�������\�z����v���W�F�N�g�t�@�C���i*.mpc�j�ɁA�ˑ�����v���W�F�N�g����after += �ŋL�q���܂��B
project(bravo) : abclib { sharedname = bravo libs += alfa after += alfa Source_Files { BravoFoo.cpp BravoBar.cpp } } |
���C�u���� alfa �������N����悤�Ɏw�肷��ƁA�f�o�b�O�r���h���s���� alfad �Ɩ�����'d'�t�����C�u�����������N���悤�Ƃ��ăt�@�C���������炸�����N�G���[�ƂȂ�܂��B�܂��A�f�o�b�O�r���h�̏ꍇ�A�����̃��C�u��������sharedname=bravo�Ǝw�肵�Ă��Ă��f�o�b�O�r���h�ł́Abravod�Ɩ�����'d'���t�������O�ɂȂ��Ă��܂��B
����́A�����f�B���N�g���ɈقȂ�r���h�I�v�V�����Ő����������C�u���������������邽�߁A����ѓ����r���h�I�v�V�����Ő����������C�u�������m�������N���邽�߂̋@�\�ł��B����Windows VC++�ł́A�f�o�b�O�ƃ����[�X�Ō݊����̂Ȃ����C�u�������ł���̂Łinew��delete���u����������̂͗L���Șb�j�A���̋@�\���K�v�ɂȂ��Ă��܂��B
project(bravo) : abclib { sharedname = bravo libs += alfa ... } |
�O���̃��C�u�����́A�f�o�b�O�r���h�ł�����Ă��Ȃ����Ƃ��悭����܂��B���̏ꍇ�́A�����N�w���libs�ł͂Ȃ��Alit_libs�Ŏw�肵�܂��B
project(bravo) : abclib { sharedname = bravo lit_libs += alfa ... } |
mwc.pl/mpc.pl�̃R�}���h���C���I�v�V����-value_template�ŁAlib_modifier�������u�����N�ɐݒ肵�܂��B
$ mwc.pl -type make -value_template lib_modifier= ... $
�f�o�b�O�r���h�w��ƂƂ��Ɏg���Ƃ��́A
$ mwc.pl -type make -value_template configurations=Debug -value_template lib_modifier= ... $
�̂悤�ɕ�����-value_template�I�v�V�������w�肵�܂��B
����̃f�B���N�g�������O�������ꍇ�́A
mwc.pl��-exclude�I�v�V�����ŁA���O�������f�B���N�g���܂���mpc�t�@�C�������w�肵�܂��B�������O����Ƃ��̓J���}�ŋ���ė��܂��B
workspace { } |