2009-06-18 3 views
8

У нас есть программа, которая запускается отдельно, выполняется с помощью команды execvp. Поэтому для этого нужен основной метод, но я считаю, что возникает проблема затмения с помощью управляемого make. Нужно ли нам отделять этот код от отдельного проекта или есть способ включить его в один проект затмения?Как создать две сети в проекте eclipse C++

ответ

1

Если вызываемый make-файл не скомпилирует 2 метода main() в один и тот же исполняемый файл, это не вызовет проблемы. Я не знаю, как обрабатываются проекты eclipse - если это похоже на VS, где «проект» означает один исполняемый файл или библиотеку, а «решение» - это группа «проектов», то, похоже, вам понадобится больше одного проект. Если OTOH, «проект» может содержать разные «подпроекты», где «подпроект» является исполняемым или библиотечным, вы должны легко справляться с этим.

3

Храните его в том же проекте и используйте препроцессор, который вы определяете по-разному в зависимости от того, какой тип основного объекта вы хотите включить в текущий проект. Здесь сеть находится в одном файле, но они могут, конечно, находиться в разных файлах.

#if defined(MAIN_ONE) 
int main() 
{ 
    // Do stuff 
} 
#elif defined(MAIN_TWO) 
int main() 
{ 
    // Do some other stuff 
} 
#endif 
1

Я не знаю, как легко построить две сети, используя систему сборки Eclipse. Наименьшее изменение, которое вам нужно сделать, это переместить в make-файлы и использовать цели makefile для сборки.

Вместо этого я бы посоветовал вам перейти на использование CMake. CMake можно использовать для создания make-файлов, которые будут использоваться с eclipse. Преимущество, которое вы получаете от использования CMake, заключается в том, что вы можете легко указать, как создавать библиотеки и связывать библиотеки для формирования исполняемых файлов. CMake может генерировать сборки для Eclipse, Visual Studio, блоков кода или make-файлов (так что вы можете использовать командную строку).

7

Создайте проект для каждого исполняемого файла, который имеет функцию main(), и создайте дополнительный проект для представления программного обеспечения в целом (проект типа «контейнер»). Eclipse позволяет вам указывать проекты в качестве зависимостей других проектов, и в этом случае вам нужно настроить проект контейнера, чтобы перечислить другие проекты как «Реферируемые проекты».

Для этого создайте проект контейнера, затем щелкните правой кнопкой мыши проект в левом столбце (проводник проекта) и выберите «Свойства». Появится диалоговое окно. Выберите элемент «Список проектов» в списке в левой части, и вы увидите список всех проектов, с которыми работает Eclipse. Установите флажки рядом с проектами для отдельных исполняемых файлов, затем нажмите «ОК». Теперь, когда вы выполняете сборку проекта контейнера, Eclipse также должен автоматически выполнять сборку этих зависимых проектов.

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

+0

Как остановить контейнерный проект от жалобы на то, что у него нет «всех» или «чистых» целей? Во-вторых, как вы определяете порядок, в котором будут построены подпроекты? (В настоящий момент мой набор проектов включает в себя один проект, в котором строится библиотека, на которую все остальные проекты основаны, но библиотека не построена в первую очередь (кавычки именования), что означает, что мне нужно дважды создать проект контейнера) – Urhixidur

+0

@Urhixidur - Вы должны пометить библиотеку как зависимость от программ, которые ее используют, но я не помню, как это сделать в пользовательском интерфейсе Eclipse. Это довольно просто, если вы пишете свои собственные make-файлы. Для первого вопроса просто определите целевые объекты (даже если они фактически ничего не делают). – bta

0

Это построено на языке C++. Вам нужно будет изменить его, чтобы получить результат. Есть что-то делать 2 вещи сразу если это то, что вы хотите.

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