2013-01-12 204 views
0

我們假設我們有一個包含一些子目錄的項目,我們需要在其子目錄之一中生成.cpp和.h文件。真實的事實:如果我們在該目錄中運行命令(沒有<和>),它會生成有效的文件。Cmake無法運行shell命令

那麼如何使用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文件

爲什麼它不能只是簡單的運行這個命令?

回答

3

你不應該需要包裹COMMAND論點語錄:

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