You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/build/arm64ec-windows-abi-conventions.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
---
2
-
description: "Learn more about: Overview of ARM64EC ABI conventions"
3
2
title: "Overview of ARM64EC ABI conventions"
3
+
description: "Learn more about: Overview of ARM64EC ABI conventions"
4
4
ms.date: "06/03/2022"
5
5
---
6
6
# Overview of ARM64EC ABI conventions
@@ -73,7 +73,7 @@ Special helper routines like `__chkstk_arm64ec` use custom calling conventions a
73
73
74
74
<sup>2</sup> The ARM64EC carry flag `C` is the inverse of the x64 carry flag `CF` for subtraction operations. There's no special handling, because the flag is volatile and is therefore trashed when transitioning between (ARM64EC and x64) functions.
75
75
76
-
## <aname="register-mapping-for-vector-registers"/> Register mapping for vector registers
76
+
## <aname="register-mapping-for-vector-registers"></a> Register mapping for vector registers
Copy file name to clipboardExpand all lines: docs/build/reference/contents-of-a-makefile.md
+5-5Lines changed: 5 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
---
2
-
description: "Learn more about: NMAKE makefile contents and features"
3
2
title: "NMAKE makefile contents and features"
3
+
description: "Learn more about: NMAKE makefile contents and features"
4
4
ms.date: 09/30/2021
5
5
helpviewer_keywords: ["makefiles", "makefiles, contents", "NMAKE program, special characters", "makefiles, special characters", "special characters, in NMAKE macros", "macros, special characters", "NMAKE program, long filenames", "makefiles, comments", "NMAKE program, wildcards", "wildcards, expanding"]
6
6
---
@@ -24,19 +24,19 @@ For a sample, see [Sample makefile](sample-makefile.md).
24
24
25
25
NMAKE supports other features, such as wildcards, long filenames, comments, and escapes for special characters.
26
26
27
-
## <aname="wildcards-and-nmake" /> Wildcards and NMAKE
27
+
## <aname="wildcards-and-nmake"></a> Wildcards and NMAKE
28
28
29
29
NMAKE expands filename wildcards (**`*`** and **`?`**) in dependency lines. A wildcard specified in a command is passed to the command; NMAKE doesn't expand it.
30
30
31
-
## <aname="long-filenames-in-a-makefile" /> Long filenames in a makefile
31
+
## <aname="long-filenames-in-a-makefile"></a> Long filenames in a makefile
32
32
33
33
Enclose long filenames in double quotation marks, as follows:
34
34
35
35
```makefile
36
36
all : "VeryLongFileName.exe"
37
37
```
38
38
39
-
## <a name="comments-in-a-makefile" /> Comments in a makefile
39
+
## <a name="comments-in-a-makefile"></a> Comments in a makefile
40
40
41
41
Precede a comment with a number sign (**`#`**). NMAKE ignores text from the number sign to the next newline character.
42
42
@@ -66,7 +66,7 @@ To specify a literal number sign, precede it with a caret (**`^`**), as follows:
66
66
DEF = ^#define #Macro for a C preprocessing directive
67
67
```
68
68
69
-
## <a name="special-characters-in-a-makefile" /> Special characters in a makefile
69
+
## <a name="special-characters-in-a-makefile"></a> Special characters in a makefile
70
70
71
71
To use an NMAKE special character as a literal character, place a caret (**`^`**) in front of it as an escape. NMAKE ignores carets that precede other characters. The special characters are:
Copy file name to clipboardExpand all lines: docs/build/reference/creating-a-makefile-project.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
---
2
-
description: "Learn more about: Create a makefile project"
3
2
title: "Create a C++ makefile project in Visual Studio"
3
+
description: "Learn more about: Create a makefile project"
4
4
ms.date: 09/30/2021
5
5
f1_keywords: ["vc.appwiz.makefile.project"]
6
6
helpviewer_keywords: ["Makefile projects [C++]"]
@@ -16,7 +16,7 @@ If you have an existing makefile project, you have these choices if you want to
16
16
-**Visual Studio 2017 and later**: Use the **Open Folder** feature to edit and build a makefile project as-is without any involvement of the MSBuild system. For more information, see [Open Folder projects for C++](../open-folder-projects-cpp.md).
17
17
-**Visual Studio 2019 and later**: Create a UNIX makefile project for Linux.
18
18
19
-
## <aname="create_a_makefile_project" /> To create a makefile project with the makefile project template
19
+
## <aname="create_a_makefile_project"></a> To create a makefile project with the makefile project template
20
20
21
21
In Visual Studio 2017 and later, the Makefile project template is available when the C++ Desktop Development workload is installed.
Copy file name to clipboardExpand all lines: docs/build/reference/defining-an-nmake-macro.md
+5-5Lines changed: 5 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
---
2
-
description: "Learn more about: Defining an NMAKE Macro"
3
2
title: "Define an NMAKE Macro"
3
+
description: "Learn more about: Defining an NMAKE Macro"
4
4
ms.date: 09/30/2021
5
5
helpviewer_keywords: ["macros, NMAKE", "defining NMAKE macros", "NMAKE macros, defining", "defining macros", "NMAKE program, defining macros", "NMAKE program, undefined macros", "Null macros in NMAKE", "macros, null and undefined", "undefined macros and NMAKE", "NMAKE program, null macros", "special characters, in NMAKE macros"]
6
6
---
@@ -16,7 +16,7 @@ The *macro_name* is a case-sensitive combination of letters, digits, and undersc
16
16
17
17
The *string* can be any sequence of zero or more characters. A *null* string contains zero characters or only spaces or tabs. The *string* can contain a macro invocation.
18
18
19
-
## <aname="special-characters-in-macros" /> Special characters in macros
19
+
## <aname="special-characters-in-macros"></a> Special characters in macros
20
20
21
21
A number sign (**`#`**) after a definition specifies a comment. To specify a literal number sign in a macro, use a caret (**`^`**) to escape it, as in **`^#`**.
22
22
@@ -31,19 +31,19 @@ CMDS = cls^
31
31
dir
32
32
```
33
33
34
-
## <aname="null-and-undefined-macros" /> Null and undefined macros
34
+
## <aname="null-and-undefined-macros"></a> Null and undefined macros
35
35
36
36
Both null and undefined macros expand to null strings, but a macro defined as a null string is considered defined in preprocessing expressions. To define a macro as a null string, specify no characters except spaces or tabs after the equal sign (**`=`**) in a command line or command file, and enclose the null string or definition in double quotation marks (**`" "`**). To undefine a macro, use **`!UNDEF`**. For more information, see [Makefile preprocessing directives](makefile-preprocessing.md#makefile-preprocessing-directives).
37
37
38
-
## <aname="where-to-define-macros" /> Where to define macros
38
+
## <aname="where-to-define-macros"></a> Where to define macros
39
39
40
40
Define macros in a command line, command file, makefile, or the *`Tools.ini`* file.
41
41
42
42
In a makefile or the *`Tools.ini`* file, each macro definition must appear on a separate line and can't start with a space or tab. Spaces or tabs around the equal sign are ignored. All *string* characters are literal, including surrounding quotation marks and embedded spaces.
43
43
44
44
In a command line or command file, spaces and tabs delimit arguments and can't surround the equal sign. If *string* has embedded spaces or tabs, enclose either the string itself or the entire macro in double quotation marks (**`" "`**).
45
45
46
-
## <aname="precedence-in-macro-definitions" /> Precedence in macro definitions
46
+
## <aname="precedence-in-macro-definitions"></a> Precedence in macro definitions
47
47
48
48
If a macro has multiple definitions, NMAKE uses the highest-precedence definition. The following list shows the order of precedence, from highest to lowest:
Copy file name to clipboardExpand all lines: docs/build/reference/inference-rules.md
+7-7Lines changed: 7 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
---
2
-
description: "Learn more about: NMAKE inference rules"
3
2
title: "Inference rules"
3
+
description: "Learn more about: NMAKE inference rules"
4
4
ms.date: 09/30/2021
5
5
helpviewer_keywords: ["inference rules in NMAKE", "rules, inference", "NMAKE program, inference rules", "search paths in NMAKE inference rules", "defining inference rules", "batch-mode inference rules in NMAKE", "rules, predefined", "NMAKE program, predefined rules", "predefined rules in NMAKE", "rules, inferred", "inferred dependents in NMAKE", "inferred rules in NMAKE", "dependents, inferred", "precedence, inference rule"]
6
6
---
@@ -10,7 +10,7 @@ Inference rules in NMAKE supply commands to update targets and to infer dependen
10
10
11
11
If an out-of-date dependency has no commands, and if [`.SUFFIXES`](dot-directives.md) contains the dependent's extension, NMAKE uses a rule whose extensions match the target and an existing file in the current or specified directory. If more than one rule matches existing files, the **`.SUFFIXES`** list determines which to use; list priority descends from left to right. If a dependent file doesn't exist and isn't listed as a target in another description block, an inference rule can create the missing dependent from another file that has the same base name. If a description block's target has no dependents or commands, an inference rule can update the target. Inference rules can build a command-line target even if no description block exists. NMAKE may invoke a rule for an inferred dependent even if an explicit dependent is specified.
12
12
13
-
## <aname="defining-a-rule" /> Defining a rule
13
+
## <aname="defining-a-rule"></a> Defining a rule
14
14
15
15
The *from_ext* represents the extension of a dependent file, and *to_ext* represents the extension of a target file.
16
16
@@ -21,7 +21,7 @@ The *from_ext* represents the extension of a dependent file, and *to_ext* repres
21
21
22
22
Extensions aren't case-sensitive. Macros can be invoked to represent *from_ext* and *to_ext*; the macros are expanded during preprocessing. The period (**`.`**) that precedes *from_ext* must appear at the beginning of the line. The colon (**`:`**) is preceded by zero or more spaces or tabs. It can be followed only by spaces or tabs, a semicolon (**`;`**) to specify a command, a number sign (**`#`**) to specify a comment, or a newline character. No other spaces are allowed. Commands are specified as in description blocks.
23
23
24
-
## <aname="search-paths-in-rules" /> Search paths in rules
24
+
## <aname="search-paths-in-rules"></a> Search paths in rules
25
25
26
26
```makefile
27
27
{from_path}.from_ext{to_path}.to_ext:
@@ -61,7 +61,7 @@ An inference rule applies to a dependency only if paths specified in the depende
Predefined inference rules use NMAKE-supplied command and options macros.
141
141
@@ -155,7 +155,7 @@ Predefined inference rules use NMAKE-supplied command and options macros.
155
155
|`.cxx.obj`|`$(CXX) $(CXXFLAGS) /c $<`|`cl /c $<`| yes | all |
156
156
|`.rc.res`|`$(RC) $(RFLAGS) /r $<`|`rc /r $<`| no | all |
157
157
158
-
## <aname="inferred-dependents-and-rules" /> Inferred dependents and rules
158
+
## <aname="inferred-dependents-and-rules"></a> Inferred dependents and rules
159
159
160
160
NMAKE assumes an inferred dependent for a target if an applicable inference rule exists. A rule applies if:
161
161
@@ -169,7 +169,7 @@ NMAKE assumes an inferred dependent for a target if an applicable inference rule
169
169
170
170
Inferred dependents can cause unexpected side effects. If the target's description block contains commands, NMAKE executes those commands instead of the commands in the rule.
171
171
172
-
## <aname="precedence-in-inference-rules" /> Precedence in inference rules
172
+
## <aname="precedence-in-inference-rules"></a> Precedence in inference rules
173
173
174
174
If an inference rule is defined more than once, NMAKE uses the highest-precedence definition. The following list shows the order of precedence from highest to lowest:
An inline file contains text you specify in the makefile. Its name can be used in commands as input (for example, a LINK command file), or it can pass commands to the operating system. The file is created on disk when a command that creates the file is run.
10
10
11
-
## <aname="specifying-an-inline-file" /> Specify an inline file
11
+
## <aname="specifying-an-inline-file"></a> Specify an inline file
12
12
13
13
Specify two angle brackets (**`<<`**) in the command where *filename* is to appear. The angle brackets can't be a macro expansion. The *filename* is optional:
14
14
@@ -18,7 +18,7 @@ Specify two angle brackets (**`<<`**) in the command where *filename* is to appe
18
18
19
19
When the command is run, the angle brackets are replaced by *filename*, if specified, or by a unique NMAKE-generated name. If specified, *filename* must follow angle brackets without a space or tab. A path is permitted. No extension is required or assumed. If *filename* is specified, the file is created in the current or specified directory, overwriting any existing file by that name. Otherwise, it's created in the `TMP` directory (or the current directory, if the `TMP` environment variable isn't defined). If a previous *filename* is reused, NMAKE replaces the previous file.
20
20
21
-
## <aname="creating-inline-file-text" /> Create inline file text
21
+
## <aname="creating-inline-file-text"></a> Create inline file text
22
22
23
23
Inline files are temporary or permanent.
24
24
@@ -34,11 +34,11 @@ Specify your *inline_text* on the first line after the command. Mark the end wit
34
34
35
35
A temporary file exists for the duration of the session and can be reused by other commands. Specify **`KEEP`** after the closing angle brackets to retain the file after the NMAKE session; an unnamed file is preserved on disk with the generated filename. Specify **`NOKEEP`** or nothing for a temporary file. **`KEEP`** and **`NOKEEP`** are not case sensitive.
To reuse an inline file, specify `<<filename` where the file is defined and first used, then reuse *filename* without `<<` later in the same or another command. The command to create the inline file must run before all commands that use the file.
You can control the NMAKE session by using preprocessing directives and expressions. Preprocessing instructions can be placed in the makefile or in *`Tools.ini`*. Using directives, you can conditionally process your makefile, display error messages, include other makefiles, undefine a macro, and turn certain options on or off.
Preprocessing directives aren't case-sensitive. The initial exclamation point (**`!`**) must appear at the beginning of the line. Zero or more spaces or tabs can appear after the exclamation point, for indentation.
15
15
@@ -67,13 +67,13 @@ Preprocessing directives aren't case-sensitive. The initial exclamation point (*
67
67
68
68
Undefines *macro_name*.
69
69
70
-
## <aname="expressions-in-makefile-preprocessing" /> Expressions in makefile preprocessing
70
+
## <aname="expressions-in-makefile-preprocessing"></a> Expressions in makefile preprocessing
71
71
72
72
The **`!IF`** or **`!ELSE IF`***constant_expression* consists of integer constants (in decimal or C-language notation), string constants, or commands. Use parentheses to group expressions. Expressions use C-style signed long integer arithmetic; numbers are in 32-bit two's-complement form in the range -2147483648 to 2147483647.
73
73
74
74
Expressions can use operators that act on constant values, exit codes from commands, strings, macros, and file-system paths.
Makefile preprocessing expressions can use operators that act on constant values, exit codes from commands, strings, macros, and file-system paths. To evaluate the expression, the preprocessor first expands macros, and then executes commands, and then does the operations. It evaluates operations in order of explicit grouping in parentheses, and then in order of operator precedence. The result is a constant value.
79
79
@@ -125,7 +125,7 @@ Expressions can use the following operators. The operators of equal precedence a
125
125
> [!NOTE]
126
126
> The bitwise XOR operator (**`^`**) is the same as the escape character, and must be escaped (as **`^^`**) when it's used in an expression.
127
127
128
-
## <aname="executing-a-program-in-preprocessing" /> Executing a program in preprocessing
128
+
## <aname="executing-a-program-in-preprocessing"></a> Executing a program in preprocessing
129
129
130
130
To use a command's exit code during preprocessing, specify the command, with any arguments, within brackets (**`[ ]`**). Any macros are expanded before the command is executed. NMAKE replaces the command specification with the command's exit code, which can be used in an expression to control preprocessing.
0 commit comments