How to capture CMake command line arguments?

前端 未结 3 1698
礼貌的吻别
礼貌的吻别 2020-12-06 01:46

I want to record the arguments passed to cmake in my generated scripts. E.g., \"my-config.in\" will be processed by cmake, it has definition like this:

<
3条回答
  •  执念已碎
    2020-12-06 02:06

    A very Linux specific way of achieving the same objective:

    if(${CMAKE_SYSTEM_NAME} STREQUAL Linux)
        file(STRINGS /proc/self/status _cmake_process_status)
    
        # Grab the PID of the parent process
        string(REGEX MATCH "PPid:[ \t]*([0-9]*)" _ ${_cmake_process_status})
    
        # Grab the absolute path of the parent process
        file(READ_SYMLINK /proc/${CMAKE_MATCH_1}/exe _cmake_parent_process_path)
    
        # Compute CMake arguments only if CMake was not invoked by the native build
        # system, to avoid dropping user specified options on re-triggers.
        if(NOT ${_cmake_parent_process_path} STREQUAL ${CMAKE_MAKE_PROGRAM})
            execute_process(COMMAND bash -c "tr '\\0' ' ' < /proc/$PPID/cmdline"
                            OUTPUT_VARIABLE _cmake_args)
    
            string(STRIP "${_cmake_args}" _cmake_args)
    
            set(CMAKE_ARGS "${_cmake_args}"
                CACHE STRING "CMake command line args (set by end user)" FORCE)
        endif()
        message(STATUS "User Specified CMake Arguments: ${CMAKE_ARGS}")
    endif()
    

提交回复
热议问题