如何将cmake项目转换为Visual Studio等效项

How to convert a cmake project into a Visual Studio equivalent?

本文关键字:Studio Visual 转换 cmake 项目      更新时间:2023-10-16

情况如下:我有一个程序的源代码(我们称之为programA)(用C和C++编写),以及CMakeLists.txt和CTestConfig.cmake文件。我已经使用 CMake 的图形用户界面安装了程序 A,很明显,它有效。它创建了.exe文件(我正在Windows 7操作系统上工作)。

问题是,现在,我

被要求编辑程序(因此,我必须能够编辑代码并在进行更改时对其进行删除)。我还需要编译它,但不再是.exe而是.dll,这样我就可以将其添加到我们拥有的网站上。

我在论坛上读到,如果需要,CMake 可以将程序 A 编译成.dll,但由于我需要进行一些更改,我认为 CMake 调试并不像完全使用 VS 那样有用和容易。根据我从CMake语言中了解到的一点点,CMakeLists.txt主要用于检查用户的操作系统以及添加一些库以防找不到它们。

我不得不承认我对 CMake 指令的编程一无所知,因为我主要使用 ASP.NET、C、C++ 和 C#。然后,我的想法是尝试只在Visual Studio 2010中工作,而不是使用cmake,所以一旦我让程序"适应"到VS并且可以只使用VS编译,我就可以开始我的工作了。所以我的问题是我如何执行CMake刚刚使用Visual Studio所做的相同任务(有没有办法在VS中实现CMake指令?),VS可以通过接收类似于CMake.txt文件的东西作为参数进行编译(尽管它需要翻译成另一种语言)?

为了跳过CMake的使用,我尝试将源代码复制到VS中的新项目中。但是,由于它在编译时不使用 CMake 指令,因此会给出几个错误,其中大多数与找不到某些 headers.h 的事实有关(因为它们可能位于子文件夹中)。而且有很多子文件夹可以将路径添加到预定义的搜索目录中,这将需要很长时间。

对不起,我的解释不能更准确。我擅长自己编写小项目,但这是我第一次必须处理别人的程序。请不要犹豫,询问是否有任何未正确理解的内容

我将不胜感激你能给出的任何建议/建议/指导。

若要创建 dll,请使用add_library命令和 SHARED 关键字

add_library(mylib SHARED ${files})

这在CMake中很容易,不要回到视觉上,最后会更难

好消息

幸运的是,cmake可以自动为您生成 VS 项目(本教程特定于 OpenTissue,但步骤 1 到 3 对您来说应该是相同的)。

[不是这样]坏消息

根据项目的复杂性,由cmake自动生成的VS项目可能会变得非常讨厌,以至于难以辨认。例如,它将使用计算机的特定路径硬链接任何库依赖项,因此该项目肯定不会跨设置移植。无论如何,这是预期的bahavior,因为支持这个生成器的主要思想只是让它工作,从而允许用户使用MSVC轻松编译项目,所以你在这里无能为力。尽管如此,它应该在您的机器中工作,并且肯定是您的一个很好的起点,只需从头开始创建一个项目,将相关部分从自动生成的版本中复制出来即可。