Generator expression evaluates WIN32 variable to true even not on Windows












0















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?










share|improve this question





























    0















    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?










    share|improve this question



























      0












      0








      0








      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?










      share|improve this question
















      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






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 22 '18 at 9:56









      Tsyvarev

      26.2k42661




      26.2k42661










      asked Nov 22 '18 at 6:48









      AfterbunnyAfterbunny

      311




      311
























          1 Answer
          1






          active

          oldest

          votes


















          0














          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}>





          share|improve this answer























            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
            });


            }
            });














            draft saved

            draft discarded


















            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









            0














            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}>





            share|improve this answer




























              0














              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}>





              share|improve this answer


























                0












                0








                0







                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}>





                share|improve this answer













                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}>






                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Nov 22 '18 at 7:32









                TsyvarevTsyvarev

                26.2k42661




                26.2k42661






























                    draft saved

                    draft discarded




















































                    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.




                    draft saved


                    draft discarded














                    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





















































                    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







                    Popular posts from this blog

                    Create new schema in PostgreSQL using DBeaver

                    Deepest pit of an array with Javascript: test on Codility

                    Costa Masnaga