в том числе заголовочный файл в отдельной папке - PullRequest
1 голос
/ 18 февраля 2011

Я создал класс (скажем, myclass.h / cpp). Я хочу использовать класс из разных мест. Поэтому я помещаю эти файлы в папку (скажем, C: \ cpp_include) и хочу включить их из любой папки, в которой находятся мои коды. У меня есть код, который использует класс (скажем, main.cpp). В main.cpp я включаю myclass:

#include "myclass.h"

Я компилирую, используя файл .pro и nmake. В файле .pro я указываю папку как:

INCLUDEPATH += C:\cpp_include

Когда я компилирую код с использованием nmake, myclass.h правильно включается, но компилятор, похоже, не находит myclass.cpp. Когда я указываю myclass.cpp в качестве одного из исходных файлов в файле .pro:

SOURCES += main.cpp C:\cpp_include\myclass.cpp

EXE-файл построен правильно. Но мне бы хотелось, чтобы файл myclass.cpp находился автоматически при включении myclass.h, т. Е. Без установки myclass.cpp в качестве исходного файла. Будет ли это возможно? Похоже, именно это происходит с классами из Qt и Qwt (например, файлы .h / cpp в папке / src / в Qt и Qwt). Я что-то упустил?

Большое спасибо!

Daisuke

Ответы [ 2 ]

0 голосов
/ 18 февраля 2011

Простой метод - это иметь сценарии сборки (make-файлы) в каталогах cpp.Напишите правило, которое пересекает каталоги, выполняя сценарии сборки.Это один шаг в изоляции функциональности, а также позволяет использовать библиотеки.

0 голосов
/ 18 февраля 2011

Это просто не так, как это работает. .Cpp - это файл, который имеет значение, заголовочные файлы (.h) просто копируются в другие файлы .cpp. Поэтому вам нужно добавить myclass.cpp в ваши исходники для компиляции. Или, если это класс библиотеки, вы также можете скомпилировать его один раз в статическую библиотеку (.lib) и просто добавить его в файлы компоновщика. Но в конечном итоге вам нужно как-то включить свою реализацию в проект, где она используется.

...