1

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

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

我在论坛中读到,如果需要,CMake 可以将 programA 编译为 .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 的事实有关(因为它们可能位于子文件夹中)。并且有很多子文件夹可以将路径添加到预定义的搜索目录,这需要很长时间。

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

我将非常感谢您提供的任何建议/建议/指导。

4

2 回答 2

3

要制作 dll,请使用 add_library 命令和 SHARED 关键字

add_library(mylib SHARED ${files})

使用 CMake 很容易,不要回到视觉上,最后会更难

于 2013-09-10T21:11:35.043 回答
1

好消息

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

[不是这样] 坏消息

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

于 2013-09-10T21:46:44.067 回答