1

我最近发现了一种叫做 premake 的神奇新宝石,我“终于”了!

我正在尝试做一个简单的“测试”配置,它的工作原理如下:在测试配置中时,排除 source/Main.cpp 当不在测试配置中时,排除 source/Test.cpp(包含另一个主)

这是尝试执行此操作的 premake4.lua 代码

解决方案 "Foo" 配置 {"Debug", "Release", "Test"} location "build"

project "Bar"
    targetname "Bar"
    language "C++"
    kind "WindowedApp"
    files {"source/**.h","source/**.cpp","source/**.c"}
    flags {"StaticRuntime","ExtraWarnings", "FatalWarnings"}

    configuration "Test"
        excludes "source/Main.cpp"
        targetsuffix "_Test"
        defines {"DEBUG", "TEST"}
        flags {"Symbols"}

    configuration "not Test"
        excludes "source/Test.cpp"

    -- And so on ...

但是当我使用“make -Cbuild config=test”编译时,它无论如何都会编译并与“Main.cpp”链接。

我究竟做错了什么?

4

2 回答 2

1

Premake 目前不支持每个配置文件或排除列表,生成构建文件时仅考虑在项目级别(任何配置之外)指定的文件。

每个配置文件列表都在下一个版本 (4.5) 的短列表中。

于 2012-02-06T16:06:28.290 回答
0

你可以这样做。

project "Bar"
    targetname "Bar"
    language "C++"
    kind "WindowedApp"
    files {"source/**.h","source/**.cpp","source/**.c"}
    flags {"StaticRuntime","ExtraWarnings", "FatalWarnings"}

    configurations { "Test", "notTest" }

    filter { "configurations:Test" }
        excludes "source/Main.cpp"
        targetsuffix "_Test"
        defines {"DEBUG", "TEST"}
        flags {"Symbols"}
    filter {}

    filter { "configurations:notTest" }
        excludes "source/Test.cpp"
    filter {}
于 2016-01-21T03:17:38.787 回答