Wpis z mikrobloga

Siema,

Mam klasę X, w zakresie której tworzony jest obiekt klasy Y. Ze względu na unit testy, które będą puszczane na maszynie o innej architekturze potrzebuję podmienić implementację klasy Y tworząc jakiegoś stuba. Jedyną rzeczą jaką chciałbym zmienić w kodzie, to stworzenie interfejsu dla klasy Y, a na etapie kompilacji pod unit testy podmieniać tylko plik źródłowy. Żeby to wszystko ogarnąć, trzeba stworzyć 3 headery (InterfaceY.hpp, Y.hpp i YStub.hpp) i dwa pliki ze źródłami (Y.cpp, YStub.cpp). Kłopot polega na tym: w jaki sposób mogę pod interfejs Y w klasie X przekazywać (przez kompilację) odpowiednią implementację?

#programowanie #programista15k #cpp #cmake #kompilacja #embedded #linux
  • 8
@Passer93: wolę widzieć po samym kodzie co może wpływać na to, że klasa zmienia swoje zachowanie. Poleganie na systemie budowania (czy linkowaniu) to straszny syf, bo cały ekosystem tworzenia kodu w C++ już jest dostatecznie skomplikowany, żeby dokładać takie coś. Plus niektóre systemy budowania (np. Bazel) nie pozwalają na takie haksy
@Saly: Rozumiem twój punkt widzenia, ale pliki CMake'a to dla mnie też część "kodu" i łączenie różnych targetów z różnych plików obiektowych to normalna praktyka.

Z CMake'iem jest jak z dżinem, tyle lat go człowiek próbuje okiełznać i nagiąć do swojej woli że jak już się uda to będzie go wykorzystywał do wszystkiego z zemsty xD