Can I get the GUID generated by CMake for a specific vcproj at cmake time?

后端 未结 2 541
礼貌的吻别
礼貌的吻别 2021-01-13 13:17

Preamble: I am trying to integrate my C# csproj with the rest of our C++ and C++/CLI code-base cmake build. I have received advise against trying to do this, because CMake d

相关标签:
2条回答
  • 2021-01-13 14:10

    After playing around with this more, I realized what Fraser pointed out - that this method wouldn't always work because I can't expect the GUIDs to be available on a fresh run of CMake. So I went the route that I had seen suggested on the CMake mailing list, which is to explicitly set the GUID values myself.

    So in the CMakeLists.txt for each C++/CLI wrapper project, I have something like this:

    # Set a global cache variable for this project GUID
    # The TestAppNet csproj needs this GUID to properly reference this project
    set_property(GLOBAL PROPERTY Wrapper_GUID "1897F4D1-E929-444E-9343-00F094113772") 
    get_property(projectGUID GLOBAL PROPERTY Wrapper_GUID)
    MESSAGE( STATUS "Setting project GUID to: ${projectGUID}")
    set(Wrapper_GUID_CMAKE "${projectGUID}" CACHE INTERNAL "Project GUID")
    

    And in the C# project CMakeLists.txt, I have this:

    get_property(CMAKE_WRAPPER_GUID GLOBAL PROPERTY Wrapper_GUID)
    MESSAGE( STATUS "Setting Wrapper GUID to: ${CMAKE_WRAPPER_GUID}" )
    

    ... and then the CMAKE_WRAPPER_GUID is used as a variable in the .csproj file that is populated during the configure_file command.

    I'm not sure if this is efficient, but it seems to work!

    0 讨论(0)
  • 2021-01-13 14:21

    Your syntax is slightly off. You probably meant:

    get_property(WRAPPER_GUID CACHE WrapperTargetName_GUID_CMAKE PROPERTY VALUE)
    

    However, this is a relatively convoluted way to get the value. You can just do:

    set(WRAPPER_GUID ${WrapperTargetName_GUID_CMAKE})
    

    Finally, this isn't ideal since the GUID isn't available until after the first run of CMake. So for a fresh build tree, you'd have to run CMake twice before this would be usable.

    0 讨论(0)
提交回复
热议问题