如何将发布目标添加到Makefile?

时间:2016-03-09 06:46:31

标签: makefile release gnu-make

我有以下Makefile,我想将其配置为默认生成调试版本,并通过指定相应的目标来发布版本。

我正在尝试解决的问题是: - 项目包含单元测试,我希望它们包含在默认构建中,但是从发布中排除,所以我将发布目标添加到Makefile:

Public Sub sample1()

Dim file1 As Excel.Workbook
Dim file2 As Excel.Workbook
Dim Sheet1 As Worksheet
Dim Sheet2 As Worksheet
Dim CopyRange As Range

    'Open both workbooks first:
    Set file1 = Workbooks.Open(TextBox1.Text)
    Set file2 = Workbooks.Open(TextBox2.Text)

    Set Sheet1 = file1.Sheets(1)
    Set Sheet2 = file2.Sheets(1)

    lngLastCol = Sheet1.Cells(1, 256).End(xlToLeft).Column
    lngLastRow = Sheet1.Range("A" & Sheet1.Rows.Count).End(xlUp).Row

    varArray = Sheet1.Range(Sheet1.Cells(2, 1), Sheet1.Cells(lngLastRow, lngLastCol)).Value

    Set CopyRange = Sheet1.Range("A1:A" & lngLastRow)
    CopyRange.EntireRow.Copy Sheet1.Cells(Rows.Count, 1).End(xlUp)(2)

    'Now, copy what you want from :
    file1.Sheets("sheet1").CopyRange.EntireRow.Copy Sheet1.Cells(Rows.Count, 1).End(xlUp)(2)


    'Now, paste to  worksheet:
    file2.Sheets("sheet1").Range("B1").PasteSpecial

    'Close 1-2:
    file2.Save
    file1.Close
    file2.Close

不幸的是,它没有帮助 - 'make'和'make release'的结果是相同的(make release编译单元测试文件,默认情况下)。我已经看过类似的问题,比如How can I configure my makefile for debug and release builds?,但没有成功解决这个问题。

1 个答案:

答案 0 :(得分:3)

调试和发布目标可以使用不同的宏(例如for_each)和不同的优化级别进行构建。您通常不希望混合调试和释放目标文件,因此需要将它们编译到不同的目录中。

我经常以不同的方式为不同的构建模式使用不同的顶级构建目录:

NDEBUG

编译器以这种方式标记:

BUILD := debug
BUILD_DIR := build/${BUILD}

然后将对象构建为cppflags.debug := cppflags.release := -DNDEBUG cppflags := ${cppflags.${BUILD}} ${CPPFLAGS} cxxflags.debug := -Og cxxflags.release := -O3 -march=native cxxflags := -g -pthread ${cxxflags.${BUILD}} ${CXXFLAGS}

当您以BUILD_DIR调用它时,会覆盖在makefile中进行的make BUILD=release分配。