[Lldb-commits] [PATCH] D13234: Use the correct Python lib for each build configuration generated by the Visual Studio CMake generator
Vadim Macagon via lldb-commits
lldb-commits at lists.llvm.org
Tue Sep 29 10:47:34 PDT 2015
enlight added inline comments.
================
Comment at: cmake/modules/LLDBConfig.cmake:61
@@ +60,3 @@
+ # below, otherwise CMake will replace the whitespace with a semicolon in some contexts (which would stuff things up).
+ set (PYTHON_EXECUTABLE $<$<CONFIG:Debug>:${PYTHON_DEBUG_EXE}>$<$<NOT:$<CONFIG:Debug>>:${PYTHON_RELEASE_EXE}>)
+ set (PYTHON_LIBRARY $<$<CONFIG:Debug>:${PYTHON_DEBUG_LIB}>$<$<NOT:$<CONFIG:Debug>>:${PYTHON_RELEASE_LIB}>)
----------------
zturner wrote:
> This line is hard to parse mentally, and I'm not sure I've seen this kind of nested generator expression. I trust you when you say it's right, but can you explain what this does?
Sure thing.
# `$<CONFIG:Debug>` evaluates to `1` when the `Debug` configuration is being generated, or `0` in all other cases.
# `$<$<CONFIG:Debug>:${PYTHON_DEBUG_EXE}>` expands to `${PYTHON_DEBUG_EXE}` when the `Debug` configuration is being generated, or nothing (literally) in all other cases.
# `$<$<NOT:$<CONFIG:Debug>>:${PYTHON_RELEASE_EXE}>` expands to `${PYTHON_RELEASE_EXE}` when any configuration other than `Debug` is being generated, or nothing in all other cases.
Since the conditionals in 2 & 3 are mutually exclusive, and a conditional expression that evaluates to `0` yields no value at all, it's possible to concatenate them to obtain a single value. This value will be `${PYTHON_DEBUG_EXE}` when generating the Debug configuration, or `${PYTHON_RELEASE_EXE}` when generating any other configuration.
Repository:
rL LLVM
http://reviews.llvm.org/D13234
More information about the lldb-commits
mailing list