Я использую cmake
для создания файлов проекта для проекта C++, который необходимо скомпилировать в Visual Studio 6 и 2010. Файлы генерируются ОК для обоих проектов, и я могу создать проектов без проблем.Как получить абсолютные пути в файлах сгенерированных cmake
Однако файлы vxproj 2010 содержат относительные пути к файлам cpp
, и когда я использую Jenkins для создания файлов, журнал содержит относительные пути, которые Jenkins не может использовать для поиска исходных файлов.
Я вижу это:
.. \ .. \ источник \ ModuleA \ file1.cpp (74): предупреждение C4800: 'BOOL': форсирование значение BOOL 'истина' или 'ложь' (предупреждение производительности)
Хотя это должно было быть либо source/moduleA/file.cpp
или D:\jenkins\jobs\workspace\source\moduleA\file.cpp
для Jenkins, чтобы быть в состоянии найти файл.
Конечно, я могу сделать парсер для анализа файла журнала и удалить ..\...\
, но я надеюсь найти более элегантное решение.
Можете ли вы показать кусок кода CMake, который добавляет 'source \ moduleA \ file1.cpp' в сборку? – arrowd
Похоже, что он действительно нашел файл - он дает вам предупреждение при компиляции. Можете ли вы опубликовать фактическую ошибку, в которой говорится, что он не может найти файл? Кроме того, если ваша ошибка в VS2010: по какой причине вы не используете файл решения вместо vxproj напрямую? – Sagar
Ошибка компиляции. В исходной папке у меня есть один CMakeLists.txt, который включает moduleA. В ModuleA я использую это: 'файл (GLOB GUIDLL_SRC "* .h" "* .cpp" "* .rc") add_library (GuiDllD ШАРЕД $ {GUIDLL_SRC})' – uncletall