PROTOBUF_GENERATE_CPP does not generating src and header files

Directory:

|test
--|build
--|msg
--|proto
----|test.poto
--|CMakeLists.txt
--|test.bat

this is my CMakeLists.txt

cmake_minimum_required(VERSION 3.0.0)

project(test)
message(STATUS "source path: ${PROJECT_SOURCE_DIR}")

file(GLOB PROTO_FILE proto/*.proto)
if(NOT WIN32)
    message("if NOT WIN32")
    message("NOT WIN32 ${PROTO_FILE}---------------")
    find_package(Protobuf REQUIRED)
    SET_SOURCE_FILES_PROPERTIES(${PROTO_SRC} ${PROTO_INCL} PROPERTIES GENERATED TRUE)
    #include_directories(${Protobuf_INCLUDE_DIRS})
    #include_directories(${CMAKE_CURRENT_BINARY_DIR})
    # PROTOBUF_GENERATE_CPP(PROTO_SRCS PROTO_HDRS ${PROTO_FILE})
    protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS ./proto/test.proto)
else(NOT WIN32)
    message("else NOT WIN32 ${PROTO_FILE}---------------")
    foreach(proto ${PROTO_FILE})
        execute_process(
            COMMAND protoc --cpp_out=./ --proto_path=${CMAKE_CURRENT_SOURCE_DIR} ${proto}
            WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
        )
    endforeach()
    # message("else NOT WIN32 ${PROTO_FILE}---------------")
    # execute_process(
    #     COMMAND cmd /c "test.bat"
    #     WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
    #     RESULT_VARIABLE CMD_RESULT
    # )

    # if (CMD_RESULT EQUAL 0)
    #     message("Script executed successfully.")
    # else()
    #     message("Script execution failed with error code: ${CMD_RESULT}")
    # endif()
endif()

in buid i excute cmake … output:

-- source path: /data/cmake
if NOT WIN32
NOT WIN32 /data/cmake/proto/test.proto---------------
-- Configuring done
-- Generating done
-- Build files have been written to: /data/cmake/build

but it does not generating src and header files i try like:add a line SET_SOURCE_FILES_PROPERTIES(${PROTO_SRC} ${PROTO_INCL} PROPERTIES GENERATED TRUE) not work
But i excute protoc -I ./ *.proto --cpp_out=./ in proto it succ,so i wanna know why PROTOBUF_GENERATE_CPP not generating src and header files

trys:
add a line
SET_SOURCE_FILES_PROPERTIES(${PROTO_SRC} ${PROTO_INCL} PROPERTIES GENERATED TRUE)
not work
i see this:
PROTOBUF_GENERATE_CPP not generating src and header files
cmake protobuf_generate_cpp not invoking protoc wants:
PROTOBUF_GENERATE_CPP generate src and header files

1 Like

You’re only showing CMake output. The files are supposed to be generated at build time (when building), not when CMake is running. Are the files generated when you do a build of the CMake-generated buildsystem?

The generated sources also need to be added to a target to compile as there’s nothing tying the custom command output to the default all target either (IIRC).

I have the same problem, The files are not generated in cmake configure and build time. How can I solve it?