2011-05-25 65 views
8

我試圖將cmake生成的所有二進制文件複製到特定目錄。我不想使用EXECUTABLE_OUTPUT_PATH,將它們保留在構建樹中使開發更容易。Cmake:當位置不存在時,使用add_custom_command將二進制文件複製到特定位置失敗

所以我用add_custom_command添加後生成副本

# set the final binary dir 
set(PROJECT_BINARY_DIR ${PROJECT_SOURCE_DIR}/bin) 

# get name and location of binary, namecan change with os (cf. ".exe" suffix on windows) 
GET_TARGET_PROPERTY(EXAMPLE_BIN_NAME example LOCATION) 
# copy bin to binary folder 
ADD_CUSTOM_COMMAND(TARGET example 
      POST_BUILD 
      COMMAND ${CMAKE_COMMAND} -E copy ${EXAMPLE_BIN_NAME} ${PROJECT_BINARY_DIR}/. 
) 

的問題是,在第一次構建的「bin」文件夾不存在(副本失敗),但「bin」文件夾剛剛創建。因此,在第二個版本中,複製工作。

有沒有辦法讓自定義命令創建bin文件夾,然後複製二進制文件? 或者有可能有兩個EXECUTABLE_OUTPUT_PATH與cmake?

謝謝!

+0

見https://stackoverflow.com/questions/6594796/how-do-i-make- cmake-output-into-bin-dir – 2017-05-30 13:57:35

回答

16

只要確保目標位置的「bin」調用拷貝命令之前存在,即:

ADD_CUSTOM_COMMAND(TARGET example 
      POST_BUILD 
      COMMAND ${CMAKE_COMMAND} -E make_directory ${PROJECT_BINARY_DIR} 
      COMMAND ${CMAKE_COMMAND} -E copy ${EXAMPLE_BIN_NAME} ${PROJECT_BINARY_DIR}/. 
) 
+0

是的,這是我的解決方法,但我希望有一個更好的解決方案。無論如何,謝謝你的回答! – 2011-05-26 03:35:09

相關問題