如果您執行vim --version
,它將顯示一些關於它如何編譯的信息。在我的系統上,它看起來像這樣:在CMake中獲取完整編譯命令
編譯:gcc -c -I。 -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK -pthread -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libdrm -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr /include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -D_FORTIFY_SOURCE = 2 -march = x86-64 -mtune = generic -O2 -pipe -fstack-protector-strong --param = ssp-buffer-size = 4 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE = 1
鏈接:gcc -L。 -Wl,-O1, - sort-common, - 根據需要,-z,relro -fstack-protector -rdynamic -Wl,-export-dynamic -Wl,-E -Wl,-rpath,/ usr/lib/perl5/core_perl/CORE -Wl,-O1, - sort-common, - 根據需要,-z,relro -L -L/usr/local/lib -Wl, - 根據需要-o vim -lgtk- x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfontconfig -lfreetype -lSM- lICE -lxt -lx11 -lxdmcp -lSM -lice -lm -lncurses -lelf -lnsl -lacl -lattr -lgpm -ldl -L/usr/lib -llua -Wl,-E -Wl,-rpath,/ usr/lib/perl5/core_perl/CORE -Wl,-O1, - sort-common, - 根據需要,-z,relro -fstack-protector -L/usr/local/lib -L / usr/lib/perl5/core_perl/CORE -lperl -lnsl -ldl -lm -lcrypt -lutil -lpthread -lc -L/usr/lib/python2.7/config -lpython2.7 -lpthread -ldl -lutil -lm -Xlinker -export-dynamic -lruby -lpthread -lgmp -ldl -lcrypt -lm -L/usr/lib ```
我想添加類似的信息到使用CMake構建的應用程序的版本輸出。
我知道有像CMAKE_C_FLAGS
這樣的變量,但它取決於其他變量,如果這些變量被實際使用。例如,如果指定了CMAKE_BUILD_TYPE=Release
,則使用CMAKE_C_FLAGS_RELEASE
。因此,試圖將這些信息從各個CMake變量中拼湊出來可能會有錯誤傾向,並且最終您不能確定這是CMake用來編譯源代碼的真正原因。
有沒有辦法讓CMake用來編譯源文件的實際命令,類似於上面的vim --version
的輸出?