我有一个C ++项目,Ubuntu,Linux 64。 如果二进制文件是使用make生成的,则从cmake生成。基于 CMakeLists.txt大概是~720Kb的二进制文件,而code :: blocks产生525Kb的二进制文件。 我的问题是为什么?
cmake_minimum_required(VERSION 2.6)
PROJECT(WHATEVER)
set(CMAKE_C_COMPILER "gcc")
set(CMAKE_CXX_COMPILER "g++")
set(CMAKE_CXX_FLAGS "-std=c++0x -Wall -fexceptions -fpermissive -D__USE_MISC")
ADD_EXECUTABLE(mybinary
file1.cpp
file2.cpp)
include_directories (.../include)
link_directories(../lib/)
TARGET_LINK_LIBRARIES(mybinary pthread dl ${CMAKE_CURRENT_LIST_DIR}/../lib/somelib.a)
SET(EXECUTABLE_OUTPUT_PATH ../bin)
这产生了一个二进制:721Kb,虽然Code :: Blocks项目具有相同的文件, 相同的编译器设置,相同的库 code :: blocks输出构建:
Cleaned "mybinary - Release"
-------------- Build: Release in mybinary (compiler: GNU GCC Compiler)---------------
g++ -std=c++0x -Wall -fexceptions -fpermissive -D__USE_MISC -I../include -c /home/user/project/file1.cpp -o obj/Release/home/user/project/file1.o
g++ -std=c++0x -Wall -fexceptions -fpermissive -D__USE_MISC -I../include -c /home/user/project/file2.cpp -o obj/Release/home/user/project/file2.o
g++ -o ../bin2/mybinary obj/Release/home/user/project/file1.o obj/Release/home/user/project/file2.o -lpthread -ldl ../lib/somelib.a
Output file is ../bin2/mybinary with size 504.17 KB
Process terminated with status 0 (0 minute(s), 17 second(s))
0 error(s), 0 warning(s) (0 minute(s), 17 second(s))
产生二进制:504Kb
谢谢