一动不如一静

C++博客 首页 新随笔 联系 聚合 管理
  20 Posts :: 0 Stories :: 10 Comments :: 0 Trackbacks
来源:
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 {
FOO_Files {
foo.file
}

FOO_Files {
commandflags += -QR
bar.file
}
}
Q:有没有办法表明编译选项?
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"



posted on 2006-06-24 10:18 一动不如一静 阅读(1327) 评论(1)  编辑 收藏 引用 所属分类: ACE

Feedback

# re: 关于MPC的问题收集 2006-06-25 16:23 Stone Jiang
不错.
  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理