Я попробовал этот фиктивный пример:
cmake_minimum_required( VERSION 2.8 )
project( testcmake )
add_custom_command(
OUTPUT testcmake.h
COMMAND xxd -i testcmake.txt testcmake.h
DEPENDS testcmake.txt
)
add_executable( testcmake testcmake.c testcmake.h )
#include <stdio.h>
#include "testcmake.h"
int main()
{
int i;
for ( i = 0 ; i < testcmake_txt_len ; i++ )
{
fputc( testcmake_txt[ i ], stdout );
}
}
foo
bar
baz
Это не удается с:
[...]
xxd: testcmake.txt: No such file or directory
[...]
Добавление WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
заставляет все работать нормально, но я не хочу, чтобы вывод моей пользовательской команды отображался в моем исходном каталоге, я хочу, чтобы все промежуточные файлы оставались в каталоге сборки CMake, как и любое нестандартное правило.