2013-04-09 1 views
0

Я использую 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, чтобы быть в состоянии найти файл.

Конечно, я могу сделать парсер для анализа файла журнала и удалить ..\...\, но я надеюсь найти более элегантное решение.

+0

Можете ли вы показать кусок кода CMake, который добавляет 'source \ moduleA \ file1.cpp' в сборку? – arrowd

+0

Похоже, что он действительно нашел файл - он дает вам предупреждение при компиляции. Можете ли вы опубликовать фактическую ошибку, в которой говорится, что он не может найти файл? Кроме того, если ваша ошибка в VS2010: по какой причине вы не используете файл решения вместо vxproj напрямую? – Sagar

+0

Ошибка компиляции. В исходной папке у меня есть один CMakeLists.txt, который включает moduleA. В ModuleA я использую это: 'файл (GLOB GUIDLL_SRC "* .h" "* .cpp" "* .rc") add_library (GuiDllD ШАРЕД $ {GUIDLL_SRC})' – uncletall

ответ

0

В конце концов я нашел вариант компилятора, который может исправить это. Вы можете добавить флаг /FC для Visual Studio 2010. Не уверен, что он работает для VC6. Чтобы добавить его, используйте это:

SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /FC") 
Смежные вопросы