W CMake na flagi dla kompilatora C++ można wpływać na różne sposoby: ustawiając CMAKE_CXX_FLAGS
ręcznie, używając add_definitions()
, wymuszając pewien standard C++ i tak dalej.Pobierz pełną linię komend kompilatora C++
Aby skompilować cel w tym samym projekcie z różnymi regułami (prekompilowany nagłówek, w moim przypadku), muszę odtworzyć dokładne polecenie, które jest używane do kompilowania plików dodanych przez polecenie takie jak add_executable()
w tym katalogu.
Czytanie CMAKE_CXX_FLAGS
zwraca tylko wartość ustawioną do niego jawnie, CMAKE_CXX_FLAGS_DEBUG
i tylko lista rodzeństwa zawiera domyślne opcje debugowania/wydawania. Istnieją specjalne funkcje pobierania flag od add_definitions()
i add_compiler_options()
, ale żadna nie wydaje się być w stanie zwrócić ostateczną linię poleceń.
Jak mogę uzyskać wszystkie flagi przekazane do kompilatora do zmiennej CMake?
Jest to na pewno przydatne, ale muszę ponownie użyć flag kompilatora w tym samym projekcie, więc w jakiś sposób muszę je pobrać do zmiennej. –
To jest trudniejsze. Uważam, że jedyną opcją jest połączenie wszystkich różnych źródeł flag razem. Prekompilowane nagłówki są źródłem znaczących problemów z CMake. Wiele flag ma także odwrotność, która zastąpi wcześniejszą wersję pozytywną (więc jeśli potrzebujesz tylko wyłączyć kilka rzeczy, możesz je odwrócić za pomocą _adding_ dodatkowych flag). Chyba widziałem to: http://stackoverflow.com/questions/148570/using-pre-compiled-headers-with-cmake –
To wydaje się być jedynym rozwiązaniem, dzięki. –