12

我发现了很多与我要问的问题类似的问题,但它们似乎并没有完全帮助我理解如何做我想做的事情,假设它甚至是可行的。

我非常喜欢 Visual Studio,我想将它用作 C++ 项目的开发环境,但如果我愿意,我也希望能够在我的双引导 Linux 系统上构建我的任何项目。我还希望能够将我的头文件和源文件组织到共享驱动器上的特定目录结构中。我想使用 CMake 来配置项目以使用 Linux 上的 Make 或 Windows 上的 Visual Studio 来构建它。

那么是否可以在 Visual Studio 2012 Pro 中维护一个项目以利用其 IntelliSense 和编译以便快速编写代码和测试它,然后轻松地将源文件作为 CMake 配置的一部分放在不同的目录中(我图无论如何我仍然需要维护我的 CMake .txt 文件)?

每次添加或修改代码时,我都可以将源代码从项目目录复制到 CMake 文件夹,然后更新我的 CMake .txt 文件,但这似乎很耗时。

我知道有一个转换器可以将解决方案转换为 CMake 文件。那是我最好的选择吗?如果是这样,它运作良好吗?

4

2 回答 2

5

我对你问题的最佳回答:

虽然我不能推荐这个工具,因为我没有使用它,但它似乎是最接近你正在寻找的东西。

http://sourceforge.net/projects/vcproj2cmake/

它需要在您的计算机上安装Ruby运行时,但它会根据您的 Visual Studio 项目生成CMakeLists.txt文件。

我会谨慎对待这一点,因为在转换中可能会丢失一些细微的 CMake 细微差别,但它有几个好评,并且肯定会使过程更容易,即使在检查之前涉及一些手动步骤in(验证 CMake 脚本是否正确)。

也许您可以将其与单元测试集成以验证 CMake 脚本的完整性?您可以随时为您发现的问题提供补丁。

一个潜在的替代方案:

我在推断一些事情,如果我做出任何假设,请原谅我。

如果您的目标是跨平台,并且 CMake 不是一项技术要求(只是达到目的的一种手段),但您不想采用推荐的 CMake 工作流程,因为它不是很直观(我完全可以理解那),也许您可​​以看一下Premake,它是较新的,但仍然是一个相当强大的项目生成工具:

我发现语法(纯Lua)更容易理解,并且它的项目建模更接近 Visual Studio 解决方案。这对您来说可能是更自然的工作流程。

它也是开源的,我发现添加扩展实际上非常容易(我上次使用它已经一年了,我不确定它现在的状态)。也许您也可以构建一个反向生成器,因为该库带有一个完整的 Visual Studio 项目解析器,并且您可以让它在两个方向上生成。

一年前我选择不采用它,因为当时它很难生成相互依赖的 Xcode 项目(也许它已经修复了!)。不过,我对 Makefile 或 Visual Studio 解决方案没有任何问题。

最后的建议

我不建议从 Visual Studio 项目反向生成项目生成脚本的原因仅仅是它对您的项目产生了非常尴尬的依赖。Visual Studio 项目不是标准化的,甚至是开放的——如果 Microsoft 更改格式,您可能会破坏您的工作流程,直到您或其他人为您的反向生成器创建一个补丁以让您再次工作。

您可能会争辩说,项目生成存在相同的问题,但 Visual Studio 历来都是向后兼容的 - 或者至少附带了执行项目更新的工具。在较旧版本中生成项目很可能始终有效,而尝试解析 Visual Studio 解决方案的较新版本则更容易出错和损坏。

如果这是一个您希望在未来很多年继续使用和维护的严肃的生产项目,我强烈建议采用经过验证的工作流程(直接在 CMake 或 Premake 文件中工作),即使它不太理想或不舒服首先对于开发人员。如果这将是一个长期项目,那么您熟悉新工作流程所花费的时间与您继续跨多个平台和不同团队维护临时构建系统所花费的时间相比将相形见绌。另外,作为开发人员,它还会为您的腰带添加另一个工具。只是我的两分钱。

于 2013-03-16T19:57:35.107 回答
1

考虑到我最近的经验,当我设法使用 CMake 生成Eclipse或 Visual Studio 解决方案文件时,我不建议您将解决方案自动转换为 CMake 文件。Visual Studio 项目文件包含过多的信息和参数,这些信息和参数通常是不需要的,CMake 不直接支持(用不同结构表达的功能),或者不受支持。

此外,所有源文件和项目文件的解决方案布局可能很奇怪,并且对于其他平台不方便。

我估计清理生成的文件比从头开始编写干净的 CMake 文件需要更多时间。这也是一种更合理的方式,因为您可以完全控制项目结构。

就我而言,我最终使用以下 CMake 命令来生成 Visual Studio 解决方案:

cmake -G "Visual Studio 10" -D DEBUG=0 .

对于 Windows 上的命令行批处理构建和安装,我会:

cmake --build . --target install --config VC_CONFIGURATION_1  -- "/v:m"
cmake --build . --target install --config VC_CONFIGURATION_2  -- "/v:m"

CMake 文件本身是跨平台的。当然,它有几个特定于 Windows 的行定义配置,以及 add_executable() 中的 WIN32 选项,但您只能针对此平台调整它们。

于 2013-03-21T10:20:33.057 回答