Я новичок в CMake. Поэтому у меня есть несколько вопросов, которые я не хочу разбивать на отдельные темы, потому что они довольно малы и связаны между собой. Короче говоря, давайте посмотрим на этот ссылочный вызов:
/D/Software/MinGW/bin/g++.exe -fmessage-length=0 -mfpmath=sse -msse2 -msse3 -mssse3 -msse4 -fopenmp -g -Wl,--whole-archive CMakeFiles/go.dir/objects.a -Wl,--no-whole-archive -o go.exe -Wl,--out-implib,libgo.dll.a -Wl,--major-image-version,0,--minor-image-version,0 /D/Software/Qt/4.8.0/lib/libQtOpenGLd4.a /D/Software/Qt/4.8.0/lib/libQtGuid4.a /D/Software/Qt/4.8.0/lib/libQtCored4.a -lglu32 -lopengl32 -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32
- Почему CMake имеет тенденцию добавлять опции компиляции к опции ссылки ? За
Например, параметры SSE в этом случае просто не имеют значения.
- Почему
это связывает меня с некоторыми странными библиотеками
kernel32, winspool, shell32,
ole32, uuid, comdlg32, advapi32
? Когда я строил то же самое
проект с QMake - не было ни одной из этих библиотек. Более того, я
даже не знаю цель этих. Итак, это выглядит так
библиотеки избыточны, или я ошибаюсь?
- Я не вижу список связанных объектных файлов . Однако я замечаю
эта
-Wl,--whole-archive CMakeFiles/go.dir/objects.a
-Wl,--no-whole-archive -o go.exe -Wl,--out-implib,libgo.dll.a
часть, которая мне неизвестна. Но, я думаю, что все объектные файлы
каким-то образом архивируются в objects.a, и, следовательно, эта часть ссылки
по сути это то же самое, что и явный список объектных файлов, не так ли?
- Думаю, мне не нужно об этом беспокоиться, но мне любопытно,
папка build - столько мусора там:
Предполагается ли поведение CMake для генерации такого количества побочных продуктов процесса сборки? Также я полностью запутался в a.exe
- что это? Почему он должен постоянно находиться в моем каталоге сборки?