1

我目前正在移植一个 POSIX C++ 应用程序以在没有 Cygwin 或任何东西的情况下在 Windows 上运行。到目前为止没有问题。现在,该应用程序(ZNC,一个 IRC 保镖,如果你感兴趣的话)支持从 Linux/BSD 等上的 .so 共享库文件加载模块。

我毫无问题地移植了主要的可执行文件,全部打包到 VS 2008 项目文件中。现在,所述模块都是单独的 .cpp 文件,它们都无法链接到可执行文件,因为它们都导出 GetVersion() 等符号。而且无论如何也不可行。

所以,长话短说,我想(必须)将所有模块(超过 20 个)编译成单独的 DLL 文件。但是,我不想为每个项目创建一个 VS 项目。这意味着我可能必须创建一个makefile?或者类似的东西?我以前从未在 Windows 上这样做过,所以这是我的问题。将一堆 .cpps 编译成单独的 DLL 文件(具有相同的设置,所有这些都方便地存储在一个地方/文件中)的最佳方法是什么?

提前致谢!红外

4

2 回答 2

1

据我所知,没有内置的方法可以做到这一点。所以这就是我要做的:

  1. 将其中一个模块转换为 DLL,确保它可以正常工作并且一切正常。

  2. 编写一个脚本,从一个有效的参考 vcproj 生成其他 20 个 vcproj。我不知道你的模块系统的细节,所以我不确定这会有多困难。

  3. 将它们添加到解决方案中。

希望这行得通。

于 2009-01-15T23:47:15.913 回答
1

cmake与 MSVC 配合得很好,并且是跨平台的。您可以在一个(或者,根据您的选择,每个 dll 一个)CMakeList.txt 文件中列出所有库,它将生成包含所有项目文件的解决方案。在 unix 上,它生成 makefile。

哦,如果我没记错的话,在 Windows 中,make 被称为 nmake。

于 2009-01-15T23:53:30.487 回答