【问题标题】:Cmake cannot run shell commandCmake 无法运行 shell 命令
【发布时间】:2013-01-12 20:52:58
【问题描述】:

假设我们有一个包含一些子目录的项目,我们需要在其中一个子目录中生成 .cpp 和 .h 文件。 真实的事实:如果我们在该目录中运行命令(不带 ),它会生成有效文件。

那么如何使用 cmake 做同样的事情呢?

Cmake 有 add_custom_command,但它什么也没做,所以我们不能使用它。 execute_process 更好,因为它运行某些东西,但方式错误。

execute_process(COMMAND "protoc -I=\".\" --cpp_out=\".\" protocol.proto"
                WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})

不幸的是结果什么都没有,因为 cmake 无法正确运行命令,所以“protoc”打印“没有这样的文件或目录”。

添加/编辑:此 execute_process 调用位于 CMakeLists.txt 中,该文件与 protocol.proto 文件位于同一目录中

为什么它不能简单地运行这个命令?

【问题讨论】:

    标签: cmake protocol-buffers


    【解决方案1】:

    您不需要将 COMMAND 参数括在引号中:

    execute_process(COMMAND protoc -I=. --cpp_out=. protocol.proto
                    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
    

    【讨论】:

      猜你喜欢
      • 2017-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-28
      • 2014-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多