根据使用的生成器,CMAKE_CURRENT_BINARY_DIR
可能包含可执行文件,也可能不包含可执行文件。使用Unix Makefiles生成器,将可执行文件直接放置到该目录中。但是,使用Xcode生成器,可执行文件位于子目录(Debug或Release)中。
我正在尝试将一些文件复制到可执行文件旁边的目录中。这就是我正在做的事情,但仅在我使用make
时有效。也许有更好的方法?
add_custom_command(
TARGET Game POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory
${CMAKE_CURRENT_SOURCE_DIR}/assets
${CMAKE_CURRENT_BINARY_DIR}/assets
)
我找到了CMAKE_RUNTIME_OUTPUT_DIRECTORY_<CONFIG>
,但似乎没有设置。我尝试了CMAKE_RUNTIME_OUTPUT_DIRECTORY
,CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG
和目标属性RUNTIME_OUTPUT_DIRECTORY
,RUNTIME_OUTPUT_DIRECTORY_DEBUG
,但未设置它们。也许这不是我想要的。
答案 0 :(得分:3)
要指定与名为name_of_executable_target
的可执行目标相关联的目标目录,请考虑使用$<TARGET_FILE_DIR:name_of_executable_target>
生成器表达式。
add_custom_command(
TARGET Game POST_BUILD
COMMAND ${CMAKE_COMMAND} -E make_directory
$<TARGET_FILE_DIR:name_of_executable_target>/assets
COMMAND ${CMAKE_COMMAND} -E copy_directory
${CMAKE_CURRENT_SOURCE_DIR}/assets
$<TARGET_FILE_DIR:name_of_executable_target>/assets
)
有关更多详细信息,请参见https://cmake.org/cmake/help/latest/manual/cmake-generator-expressions.7.html