与你的代码交互
Configure File
CMake allows you to access CMake variables from your code using configure_file
. This command copies a file (traditionally ending in .in
from one place to another, substituting all CMake variables it finds. If you want to avoid replacing existing ${}
syntax in your input file, use the @ONLY
keyword. There's also a COPY_ONLY
keyword if you are just using this as a replacement for file(COPY
.
This functionality is used quite frequently; for example, on Version.h.in
:
Version.h.in
CMake lines:
You should include the binary include directory as well when building your project. If you want to put any true/false variables in a header, CMake has C specific #cmakedefine
and #cmakedefine01
replacements to make appropriate define lines.
You can also (and often do) use this to produce .cmake
files, such as the configure files (see the section on configuring).
Reading files
The other direction can be done too; you can read in something (like a version) from your source files. If you have a header only library that you'd like to make available with or without CMake, for example, then this would be the best way to handle a version. This would look something like this:
Above, file(STRINGS file_name variable_name REGEX regex)
picks lines that match a regex; and the same regex is used to then pick out the parentheses capture group with the version part. Replace is used with back substitution to output only that one group.
Last updated