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