2013-09-10 4 views
1

Ситуация такова: у меня есть исходный код одной программы (назовем ее программой A) (написанной на C и C++), а также файлы CMakeLists.txt и CTestConfig.cmake. Я уже установил programA, используя графический интерфейс пользователя CMake, и, как это очевидно, он сработал. Он создал файл .exe (я работаю над ОС Windows 7).Как преобразовать проект cmake в эквивалент Visual Studio?

Проблема в том, что прямо сейчас меня попросили отредактировать программу (и поэтому я должен иметь возможность редактировать код и деактивировать его по мере внесения изменений). Мне также нужно скомпилировать его, но не в .exe, а в .dll, чтобы добавить его на веб-сайт, который у нас есть.

Я читал на форумах, что CMake может скомпилировать programA в .dll, если мне это нужно, но поскольку мне нужно будет внести некоторые изменения, я считаю, что отладка CMake не так полезна и проста, как использование полностью VS. Из того, что я знаю из языка CMake, CMakeLists.txt в основном используется для проверки ОС пользователя, а также для добавления некоторых библиотек в случае, если они не найдены.

Должен признаться, я понятия не имею, как программировать директивы CMake, поскольку я работал в основном с ASP.NET, C, C++ и C#. Тогда моя идея - попытаться работать только в visual studio 2010 вместо использования cmake, так что, как только программа «адаптирована» к VS и может быть скомпилирована только с помощью VS, я готов начать свою работу. Итак, вопрос, который у меня есть, - как я могу выполнить ту же задачу, которую CMake использовал только с помощью Visual Studio (есть ли способ реализации директив CMake в VS?), Может VS компилировать, получая в качестве аргумента что-то похожее на этот файл CMake.txt (хотя его нужно перевести на другой язык)?

Чтобы пропустить использование CMake, я попытался скопировать исходный код в новый проект в VS. Однако, поскольку он не использует директивы CMake при компиляции, он дает несколько ошибок, большинство из которых связано с тем, что некоторые headers.h не могут быть найдены (потому что они могут быть в подпапке). И есть так много подпапок, чтобы добавить пути к предопределенным каталогам поиска, которые потребуют возраста.

Извините, я не могу быть более точным в своих объяснениях. Я умею программировать небольшие проекты самостоятельно, но это первый раз, когда я должен работать над другой программой. Пожалуйста, не стесняйтесь спрашивать, если что-то не было правильно понято

Я был бы признателен за любое предложение/совет/руководство, которое вы можете дать.

ответ

2

Чтобы сделать DLL, используйте команду add_library и разделяемого ключевое слово

add_library(mylib SHARED ${files}) 

это легко с CMake, не вернуться в визуал, который будет сложнее в конце

+0

спасибо за ваш совет – EPApro

1

Хороший Новости

К счастью, cmake can generate VS Projects automaticaly for you (этот учебник специально для OpenTissue, но шаги с 1 по 3 должны быть одинаковыми для вас).

код [не так] Bad News

В зависимости от сложности проекта, VS Проекты автоматически генерируемые cmake могут получить довольно неприятный, до точки неразборчивости. Например, жесткая привязка любых зависимостей в библиотеке с использованием определенных путей вашей машины, поэтому проект, безусловно, не будет переносимым по настройкам. В любом случае, это предполагаемое поведение, потому что основная идея поддержки этого генератора просто заставляет его работать, что позволяет пользователям легко компилировать проекты с использованием MSVC, поэтому здесь вы не можете многого сделать.Тем не менее, он должен работать на вашей машине и, безусловно, станет отличной отправной точкой для вас, просто создайте проект самостоятельно с нуля, копируя соответствующие части из автоматической сгенерированной версии.

+0

Большое спасибо за ваш ответ. Я прочитаю аналогичный вопрос, который вы опубликовали, и посмотрим, смогу ли я начать со всей этой информации – EPApro

Смежные вопросы