Generator expression evaluates WIN32 variable to true even not on Windows
I work on Ubuntu, and here is a part of my CMake code (the questionable part is in the last sentence):
include(ExternalProject)
ExternalProject_Add(fftw3_external
URL
http://www.fftw.org/fftw-3.3.8.tar.gz
URL_HASH
MD5=8aac833c943d8e90d51b697b27d4384d
DOWNLOAD_NO_PROGRESS
1
UPDATE_COMMAND
""
LOG_CONFIGURE
1
LOG_BUILD
1
LOG_INSTALL
1
CMAKE_ARGS
-DCMAKE_INSTALL_PREFIX=${STAGED_INSTALL_PREFIX}
-DBUILD_TESTS=OFF
CMAKE_CACHE_ARGS
-DCMAKE_C_FLAGS:STRING=$<$<BOOL:WIN32>:-DWITH_OUR_MALLOC>
)
After configuration I look inside the corresponding cache file, fftw3_external-cache.cmake
, and it shows:
set(CMAKE_C_FLAGS "-DWITH_OUR_MALLOC" CACHE STRING "Initial cache" FORCE)
But this content corresponds to WIN32 being true. Why it is so?
cmake
add a comment |
I work on Ubuntu, and here is a part of my CMake code (the questionable part is in the last sentence):
include(ExternalProject)
ExternalProject_Add(fftw3_external
URL
http://www.fftw.org/fftw-3.3.8.tar.gz
URL_HASH
MD5=8aac833c943d8e90d51b697b27d4384d
DOWNLOAD_NO_PROGRESS
1
UPDATE_COMMAND
""
LOG_CONFIGURE
1
LOG_BUILD
1
LOG_INSTALL
1
CMAKE_ARGS
-DCMAKE_INSTALL_PREFIX=${STAGED_INSTALL_PREFIX}
-DBUILD_TESTS=OFF
CMAKE_CACHE_ARGS
-DCMAKE_C_FLAGS:STRING=$<$<BOOL:WIN32>:-DWITH_OUR_MALLOC>
)
After configuration I look inside the corresponding cache file, fftw3_external-cache.cmake
, and it shows:
set(CMAKE_C_FLAGS "-DWITH_OUR_MALLOC" CACHE STRING "Initial cache" FORCE)
But this content corresponds to WIN32 being true. Why it is so?
cmake
add a comment |
I work on Ubuntu, and here is a part of my CMake code (the questionable part is in the last sentence):
include(ExternalProject)
ExternalProject_Add(fftw3_external
URL
http://www.fftw.org/fftw-3.3.8.tar.gz
URL_HASH
MD5=8aac833c943d8e90d51b697b27d4384d
DOWNLOAD_NO_PROGRESS
1
UPDATE_COMMAND
""
LOG_CONFIGURE
1
LOG_BUILD
1
LOG_INSTALL
1
CMAKE_ARGS
-DCMAKE_INSTALL_PREFIX=${STAGED_INSTALL_PREFIX}
-DBUILD_TESTS=OFF
CMAKE_CACHE_ARGS
-DCMAKE_C_FLAGS:STRING=$<$<BOOL:WIN32>:-DWITH_OUR_MALLOC>
)
After configuration I look inside the corresponding cache file, fftw3_external-cache.cmake
, and it shows:
set(CMAKE_C_FLAGS "-DWITH_OUR_MALLOC" CACHE STRING "Initial cache" FORCE)
But this content corresponds to WIN32 being true. Why it is so?
cmake
I work on Ubuntu, and here is a part of my CMake code (the questionable part is in the last sentence):
include(ExternalProject)
ExternalProject_Add(fftw3_external
URL
http://www.fftw.org/fftw-3.3.8.tar.gz
URL_HASH
MD5=8aac833c943d8e90d51b697b27d4384d
DOWNLOAD_NO_PROGRESS
1
UPDATE_COMMAND
""
LOG_CONFIGURE
1
LOG_BUILD
1
LOG_INSTALL
1
CMAKE_ARGS
-DCMAKE_INSTALL_PREFIX=${STAGED_INSTALL_PREFIX}
-DBUILD_TESTS=OFF
CMAKE_CACHE_ARGS
-DCMAKE_C_FLAGS:STRING=$<$<BOOL:WIN32>:-DWITH_OUR_MALLOC>
)
After configuration I look inside the corresponding cache file, fftw3_external-cache.cmake
, and it shows:
set(CMAKE_C_FLAGS "-DWITH_OUR_MALLOC" CACHE STRING "Initial cache" FORCE)
But this content corresponds to WIN32 being true. Why it is so?
cmake
cmake
edited Nov 22 '18 at 9:56
Tsyvarev
26.2k42661
26.2k42661
asked Nov 22 '18 at 6:48
AfterbunnyAfterbunny
311
311
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
In the generator expression
$<BOOL:WIN32>
CMake evaluates "WIN32" as a string, not as a variable. Because this string doesn't correspond to any false pattern, it is evaluated as TRUE.
You need to dereference the variable for check its value:
$<BOOL:${WIN32}>
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53425282%2fgenerator-expression-evaluates-win32-variable-to-true-even-not-on-windows%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
In the generator expression
$<BOOL:WIN32>
CMake evaluates "WIN32" as a string, not as a variable. Because this string doesn't correspond to any false pattern, it is evaluated as TRUE.
You need to dereference the variable for check its value:
$<BOOL:${WIN32}>
add a comment |
In the generator expression
$<BOOL:WIN32>
CMake evaluates "WIN32" as a string, not as a variable. Because this string doesn't correspond to any false pattern, it is evaluated as TRUE.
You need to dereference the variable for check its value:
$<BOOL:${WIN32}>
add a comment |
In the generator expression
$<BOOL:WIN32>
CMake evaluates "WIN32" as a string, not as a variable. Because this string doesn't correspond to any false pattern, it is evaluated as TRUE.
You need to dereference the variable for check its value:
$<BOOL:${WIN32}>
In the generator expression
$<BOOL:WIN32>
CMake evaluates "WIN32" as a string, not as a variable. Because this string doesn't correspond to any false pattern, it is evaluated as TRUE.
You need to dereference the variable for check its value:
$<BOOL:${WIN32}>
answered Nov 22 '18 at 7:32
TsyvarevTsyvarev
26.2k42661
26.2k42661
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53425282%2fgenerator-expression-evaluates-win32-variable-to-true-even-not-on-windows%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown