【发布时间】:2013-04-02 15:40:17
【问题描述】:
我有一个现有项目,我使用 Visual C++ 2008 在 Windows 和 Debian Linux 上编译。该项目使用标准的 Visual C++ .vcproj 文件,以及一些 .cpp 和 .h 文件。它不依赖于任何 Windows 特定的东西。只是普通的 C++。
它在 Linux 上编译和运行良好,使用 自制工具 读取 .vcproj 文件以生成 Makefile 与 make 一起使用以编译和链接所有文件g++.
问题在于,在 Visual C++ 2010(和 2012)中,项目文件的格式发生了变化。甚至名称也从.vcproj 更改为.vcxproj。我的自制工具无法读取这个新项目文件来生成Makefile。
我没有升级 自制工具 来支持新的项目文件,我想知道xbuild 是否能够编译我的 Linux 可执行文件?
我首先尝试编译我自己的(VC++2008)项目,但是xbuild 抱怨我的项目is a VS2003 project, which is not supported by xbuild. 但是在谷歌上搜索这个问题时,我发现xbuild 应该支持VS2005 项目文件。也有一些参考mdtool来支持这些老项目文件,不过我现在好像已经融入xbuild了。
此外,我尝试编译从 MSDN 站点获得的 Visual C++ 2010 示例 (HuoChess)。结果是
/Microsoft.Cpp.Default.props: Project file could not be imported, it was being
imported by [...] /HuoChessConsole/HuoChessConsole.vcxproj: Imported project:
"//Microsoft.Cpp.Default.props" does not exist.`
现在,看起来项目文件需要一些 Microsoft 为Cpp 编译器定义的规则。我应该伪造这些定义以使用gcc 吗?我该怎么做?
我想用xbuild 做的事有可能吗?
【问题讨论】:
-
最好的选择是使用 vs2010 项目中使用的文件创建全新的单声道项目并相应地编辑配置。试图将 msbuild 和其他 msstuff 与任何合理的东西相匹配是在浪费时间。
-
应用坚持相对路径的唯一规则(避免驱动器号),一个工具可以轻松地将所有 ` \ ` 更改为 ` / ` 。它甚至可以获取环境变量并更改
$(ProjectDir)等。宏。这至少是我 8 年多以来一直非常成功的做法。