В Eclipse, используя CDT.
Есть ли быстрый способ иметь две идентичные конфигурации сборки, но в одной конфигурации использовать только src / foo.h, а в другой только src / bar / foo.h?
В src / dir есть много других заголовочных файлов, и я с оптимизмом надеюсь, что не придется добавлять их все по одному, когда только один файл фактически отличается.
Я также не очень хочу перемещать файлы или изменять их, поскольку они не являются библиотеками или структурами каталогов, которые я написал сам.
(Если я действительно должен, то я думаю, что я должен разобраться)
Я полагаю, что какой-то «исключающий» список был бы идеальным. Это существует?
Определите макрос, который скажет вам, для какой конфигурации сборки вы строите, а затем используйте его, чтобы решить, какой файл включить.
Щелкните правой кнопкой мыши по вашему проекту, выберите «Свойства». Затем в появившемся диалоговом окне выберите C / C ++ Build, затем Настройки. Вы должны получить представление, которое позволит вам определить определения препроцессора (макросы).
Затем в вашем заголовочном файле сделайте следующее:
#ifndef MY_MACRO
// contents of header file only available when MY_MACRO is NOT defined
#endif
Или вы можете (и, вероятно, должны) сделать в точке включения вместо этого, так что это исходный файл:
#ifdef MY_MACRO
# include "bar.h"#else
# include "foo/bar.h"#endif
Если вы включили заголовочный файл из нескольких исходных файлов и не хотите копировать вышеупомянутые строки, вы можете добавить другой заголовок, который включит вас, просто скопировав строки выше, а затем включив этот заголовок везде.
Других решений пока нет …