S-функция Matlab C ++ с несколькими исходными файлами

У меня есть simulink модель с s ++-функцией.
Эта s-функция требует доступа ко многим (> 50) классам. Каждый класс состоит из заголовка (.h) и источник (.cpp) файл.
Я также разделил свой код на несколько каталогов:

root
-sfun.cpp
-folder1
--file1.h
--file1.cpp
--file2.h
--file2.cpp
-folder2
--file3.h
--file3.cpp
...

Для компиляции s-функции я использую mex-функцию:

mex -Ifolder1 -Ifolder2 -outdir bin sfun.cpp folder1/file1.cpp folder1/file2.cpp folder1/file3.cpp

(http://de.mathworks.com/help/matlab/ref/mex.html)

Но это становится очень длинным и уродливым со все большим количеством файлов, потому что мне нужно указывать каждую папку заголовка и исходный файл earch отдельно.
Есть ли лучший способ создать mex-файл, которому нужен доступ ко многим исходным файлам?

У меня есть следующие идеи, но я не уверен, что может быть правильным и простым способом:

  1. Добавьте все заголовочные и исходные файлы (fileX.h / fileX.cpp) в проект Visual Studio и скомпилируйте их в файл * .lib. Затем скомпилируйте только sfun.cpp с помощью инструмента mex и предоставьте доступ к файлу * .lib

  2. Переместите все заголовочные и исходные файлы в один каталог. Это сократит командную строку следующим образом:

    mex -outdir bin sfun.cpp file1.cpp file2.cpp file3.cpp
    
  3. Делаем все встроенным, так что нет необходимости в исходном файле. (очень некрасивое решение)

  4. Есть ли какой-нибудь make-файл для mex-компилятора?

  5. Включайте не только заголовочные файлы, но и исходные файлы с помощью директивы #include.

На данный момент я не убежден ни в одной из этих идей, и я был бы признателен за любую помощь.

Спасибо

Edit1:
Одна аннотация: Этот проект должен быть перенесен на компьютер dspace на более позднем этапе. Нужно ли рассматривать что-то особенное в этом случае?

4

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]