我有以下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?,但没有成功解决这个问题。
答案 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
分配。