2

我有一个作为 EXE 构建的 C++ 项目。但是,我还需要将项目构建为静态库(.LIB 文件)。现在为了获得完整的构建,我需要以一种格式构建它,然后打开项目属性并在 General > Project Defaults > Configuration Type 下选择另一种格式,接受并重新编译。这是一个真正的麻烦。有什么方法可以指定这两种类型吗?我在 MSDN 上没有看到任何关于此的内容。

我正在使用 Visual Studio 2012。

4

3 回答 3

2

解决问题的一种常见(尤其是理智)方法是拥有一个包含两个项目的解决方案。第一个项目应该是一个包含大部分代码的库(静态或动态链接,没关系)。第二个项目应该是一个可执行文件,它引用您在第一个项目中创建的库。

这样做,您的解决方案的单个构建将生成可执行文件和库。

于 2013-07-20T03:56:05.000 回答
1

创建两个项目,将同一组源文件添加到两者。

于 2013-07-20T03:33:57.210 回答
0

这是一个非常古老的线程,但对于后代:如果您的项目有一个极简的 main.cpp,您可以从构建生成的整个 .obj 构建一个库,除了 main.obj。一种典型的方法是在预链接事件上添加此构建:

<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
[...]
  <PreLinkEvent>
    <Command>@ECHO ON
    "lib.exe" /NOLOGO /OUT:"$(OutDir)$(ProjectName).lib" "$(IntermediateOutputPath)*.obj"
    "lib.exe" /NOLOGO "$(OutDir)$(ProjectName).lib" /REMOVE:"$(IntermediateOutputPath)main.obj"</Command>
  </PreLinkEvent>
</ItemDefinitionGroup>

它与 Visual Studio 2010 和 2019 一起工作(未使用中间版本进行测试)。

于 2020-01-22T14:54:01.000 回答