來(lái)源:
http://www.ociweb.com/products/mpc/faq.html#006
Q :當(dāng)生成工程文件名稱(chēng)的時(shí)候,可以改變工程文件的名稱(chēng)嗎?
A:當(dāng)用MPC生成工程文件的時(shí)候,可以用-name_modifier 選項(xiàng)來(lái)修改工程文件名稱(chēng).如果你也想修改工程的名稱(chēng),可以增加-apply_project.如下:
mwc.pl -static -type vc6 -name_modifier *_Static -apply_project
如果用了這些選項(xiàng),所有的工作空間,工程文件和工程名都以_Static結(jié)尾.
Q:怎樣用MPC在每個(gè)目錄生成一個(gè)工作空間?
A:當(dāng)運(yùn)行mwc.pl的時(shí)候加上-hierarchy選項(xiàng).對(duì)于所有基于'make'的工作空間是默認(rèn)的.
Q:怎樣告訴MPC在尋找mwc和mpc文件時(shí),不要尋找某個(gè)特殊的路徑?
A:-exclude可以用于這個(gè)目的.但是這個(gè)路徑必須是一個(gè)相對(duì)于MPC運(yùn)行的路徑.如:
mwc.pl -exclude this_dir,this_dir_too,and_another_dir
Q:怎樣在我的工作空間中用-value_template
A:在mwc文件中,你能用很多mwc.pl的命令行選項(xiàng).要加上cmdline關(guān)鍵字.如果在命令行中需要有空格,必須包含在""之中.如:
workspace {
? // Set the command line value to change the configurations with vc6, vc71 and vc8
? cmdline += -value_template "configurations='MFC Release' 'MFC Debug'"
}
Q:有沒(méi)有辦法在Solaris,工程中包含一個(gè)文件,但是在Linux上不包含該文件呢?
A:你可以用feature定義一個(gè)base工程.如下:
// config/default.features
solaris_only = 0
// some_base.mpb
feature(solaris_only) {
? Source_Files {
??? source1.cpp
??? source2.cpp
? }
}?
// your_project.mpc
project: some_base {
? Source_Files {
??? source3.cpp
??? source4.cpp
? }
}?
Q:可不可以一些選項(xiàng)用于某客戶(hù)文件,而另外一些用于其他的客戶(hù)文件呢?
A:你可以為用戶(hù)的輸入文件創(chuàng)建多個(gè)部分.如下:
project: foo {
FOO_Files {
foo.file
}
FOO_Files {
commandflags += -QR
bar.file
}
}
Q:有沒(méi)有辦法表明編譯選項(xiàng)?
A:可以用'specific' .如:
project {
? specific(make) {
??? compile_flags += -fcheck-new
? }
? specific(vc71) {
??? compile_flags += /wd4103
? }
}?
Q:在一個(gè)工作空間中,想有靜態(tài)和動(dòng)態(tài)的工程?
A:在mwc文件中,建立一個(gè)域范圍.增加-static到命令行選項(xiàng).如:
workspace {
? // These projects will be static
? some_scope_name {
??? cmdline += -static
??? my_projects_dir??
??? my_other_projects_dir
? }
? // Anything outside the scope will have the command line options provided at the start of mwc.pl
? another_dir
}
Q:有沒(méi)有方法在mpc文件中表明這個(gè)庫(kù)必須是靜態(tài)庫(kù),其他的庫(kù)不能把它用做動(dòng)態(tài)庫(kù)?
A:設(shè)置靜態(tài)庫(kù)名,而動(dòng)態(tài)庫(kù)名為空.
project {
? sharedname =
? staticname = foo
}
Q:MPC添加d.lib到所有的庫(kù).有沒(méi)有辦法關(guān)掉它?
A:在mpc文件中用'lit_libs'代替libs
Q:為vc6和vc71生成靜態(tài)工程,可是卻沒(méi)有工程的依賴(lài)?
A:可以通過(guò)設(shè)置MPC_DEPENDENCY_COMBINED_STATIC_LIBRARY環(huán)境變量,強(qiáng)迫MPC生成工程間相互依賴(lài)的的靜態(tài)庫(kù).
Q:有沒(méi)有方法可以強(qiáng)制在靜態(tài)庫(kù)名后有's'但是debug版本沒(méi)有'd'
A:是的,你能設(shè)置lib_modifier,用這個(gè)配置座位域修改器.在下面的例子中,假設(shè)-static選項(xiàng)已經(jīng)傳遞給了MPC
project {
? // Override the values of 's' and 'sd' respectively.
? specific {
??? Release::lib_modifier =
??? Debug::lib_modifier = d
? }
}?
Q:由MPC生成的VC71工程,用release ,生成的執(zhí)行文件在release目錄中.而debug是在"."目錄中,怎樣才能把執(zhí)行文件放在debug目錄中. ???
A: 增加改行到MPC工程中
project {???????????????????
? specific(nmake, vc6, vc7, vc71, vc8) {
??? Debug::install = Debug
? }
}
Q:如何生成支持MFC的版本
A:MPC的命令行增加下面一行
-value_template "configurations='MFC Release' 'MFC Debug'"
這個(gè)可以用于 em3, nmake, vc6, vc7, vc71 和 vc8 工程類(lèi)型的配置
提醒一下,別忘了創(chuàng)建config.h文件,內(nèi)容類(lèi)似如下:
#include "config-win32.h"
#include "config-win32-msvc-7.h"