如何在 premake 中为每个项目设置多个目标?

问题描述

我正在尝试在 premake 中设置多个目标。目前,我专注于 Xcode,但希望同样的想法也适用于 MS Visual Studio

在我的工作区中,我有一个库,当前有一个以项目名称命名的构建目标(我们称之为“MyLibrary”)。然后,我在工作区中有其他项目使用这个库。目前,我只支持工作区中所有项目的调试配置,但我正在尝试为我的库添加另外两个目标——发布和测试。所以,我想有以下目标:

  • MyLibrary-调试
  • MyLibrary-Release
  • MyLibrary-测试

如果我可以让库项目输出两个目标,我可以告诉我的项目根据配置使用正确的目标:

project "MyLibrary"
  --- Create multiple targets

project "DemoProject"
   --- stuff
  filter { "configurations:Debug" }
    links { "MyLibrary-Debug" }
  filter { "configurations:Release" }
    links { "MyLibrary-Release" }

这是我正在努力解决一个问题。第二个是测试。目前,我有一个单独的单元测试项目。这些测试使用库并运行测试以查看库是否有效。这很有效,但我无法为我的图书馆生成覆盖率报告。像这样的测试更适合 E2E 测试,而不是单元测试。所以,我基本上需要维护两个项目配置,一切都一样,除了包括测试和测试库的小改动:

project "MyLibrary"
  kind "StaticLib"
  files {
    "engine/src/**.cpp","engine/src/**.h",}

  links { ... }
  -- other config in library

project "MyLibrary-Test"
  kind "ConsoleApp"
  files {
    "engine/src/**.cpp","engine/tests/**.h","engine/tests/**.cpp",}

  links { "gtest","gtest_main","gmock",... }
  -- other config in library

对于多个目标,我可以为目标分配不同的配置并执行如下操作:

project "MyLibrary"
  kind "StaticLib"
  files {
    "engine/src/**.cpp",}

  links { ... }
  
  filter { "configurations:Test" }
    kind "ConsoleApp"
    files {
      "engine/tests/**.cpp","engine/tests/**.h"
    }

    links { "gtest","gmock" }

  -- Set different targets somehow,where each target
  -- sets configuration value

是否可以在 premake 中执行此操作,尤其是在不特定于 Xcode 的情况下?例如,如果我使用 gmake,目标会创建不同的二进制文件/库。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)