这我可能很琐事,但我还没弄明白。我在与源代码相同的目录中有一个.ini文件,我希望cmake将这个inifile.ini复制到生成.exe文件的目录中。这个目录可能会有所不同,具体取决于我是否进行发布或调试构建,以及我是否进行了内核或源外构建。我走到这一步:
configure_file(${myapp_SOURCE_DIR}/src/myinifile.ini
${myapp_BINARY_DIR}/bin/${????}/myinifile.ini COPYONLY)
但我需要在目标路径中包含bin / Debug或bin / Release,具体取决于构建类型。是否有一个我可以使用的cmake变量指向将生成.exe的实际目录。或者最好的方法是什么。
答案 0 :(得分:2)
您可以获取LOCATION
属性来查找目标的输出路径。接下来,您可以在add_custom_command
中使用其值:
get_target_property(exepath target_name LOCATION)
get_filename_component(outputpath "${exepath}" PATH)
add_custom_command(TARGET target_name POST_BUILD
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${myapp_SOURCE_DIR}/src/myinifile.ini" "${outputpath}")
此代码将自动处理构建类型依赖项。