Короткий вопрос:
Можно ли настроить CMake на использование символических ссылок при копировании файлов во время установки, и если да, то как это сделать?
Подробности: Я использую CMake для сборки и установки LLVM. В моем исходном дереве LLVM в каталоге include у меня есть символическая ссылка на другой подпроект, который разрабатывается для LLVM. Кажется, все работает, за исключением того, что я заметил, что когда я запустил «cmake install», он скопировал каталог include, не следуя символическим ссылкам. Проблема, которая у меня есть, заключается в том, что мои символические ссылки имеют относительный путь (потому что он находится внутри git-репо). Поэтому, когда символические ссылки копируются (вместо того, чтобы следовать и копировать содержимое), они больше не указывают на правильные файлы. Например, у меня есть dsa -> ../../llvm-poolalloc/include/dsa/
Я хотел бы скопировать содержимое этой ссылки, когда я делаю установку, а не просто копировать ссылку. Но я пока не нашел флаг cmake для этого.
Я понимаю, что это, вероятно, не идеальный способ структурировать мой проект, но я работаю с тем, что уже есть, и было бы предпочтительнее не менять слишком много структур каталогов, потому что другие люди, на которых я работаю с ожидаем, что так будет. Поэтому я думаю, что возможность следовать символическим ссылкам может решить мою проблему без необходимости реструктуризации всей системы сборки. Но я открыт для других предложений о лучших способах достижения того, что я пытаюсь сделать.
Обратите внимание, что я работаю в Linux (Ubuntu 10.04) и использую LLVM 2.6 (которую я компилирую из исходного кода вместе с llvm-gcc). Также я использую CMake версии 2.8.
Edit:
Вот исходный код из файла CMakeLists.txt, который связан с инструкцией по установке:
install(DIRECTORY include
DESTINATION .
PATTERN ".svn" EXCLUDE
PATTERN "*.cmake" EXCLUDE
PATTERN "*.in" EXCLUDE
PATTERN "*.tmp" EXCLUDE
)
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/include
DESTINATION .
)
каталог для включаемого каталога:
dsa -> ../../llvm-poolalloc/include/dsa/
llvm
llvm-c
poolalloc -> ../../llvm-poolalloc/include/poolalloc
Я хочу, чтобы каталоги dsa
и poolalloc
копировались, а не просто копировались символические ссылки. Причина, по которой я не использую абсолютные пути в символических ссылках, заключается в том, что я проверил их в git-репо. Таким образом, мой абсолютный путь будет отличаться от тех, кто работает над проектом, когда они извлекают деньги из репо.