我正在开发一个C ++项目,我有几十个模板类,当然我已经在.hpp
文件中实现了,但是当我想编译项目时,编译和输出需要将近一分钟目标文件的7.8MB
和执行文件的4.2MB
。
我知道编译器必须实例化每个模板对象,但它应该花费这么长时间吗?它不会缓存任何内容吗?
很想知道在什么情况下如何让编译更快?
P.S:
工作系统: Linux 4.4.0-45-generic#66~14.04.1-Ubuntu GNU / Linux
G ++版本: g ++(Ubuntu 6.2.0-3ubuntu11~14.04)6.2.0 20160901
Working C ++标准: C ++ 14
Cmake版本: 3.6.2
制作版本: GNU Make 3.81
编辑:需要提一下,我在这个项目中广泛使用了boost <boost/multi_array.hpp>
。
Cmake文件:
cmake_minimum_required(VERSION 3.6)
SET(CMAKE_CXX_FLAGS "-std=c++14 -pthread")
project(THESIS)
set(CMAKE_BUILD_TYPE Debug)
file(GLOB_RECURSE ISOURCES "src/*.cpp")
file(GLOB_RECURSE IHEADER "inc/*.hpp" "inc/*.h" "lib_thesis/")
set (IINCLUDE_DIRS "")
foreach (_headerFile ${IHEADER})
get_filename_component(_dir ${_headerFile} PATH)
list (APPEND IINCLUDE_DIRS ${_dir})
endforeach()
list(REMOVE_DUPLICATES IINCLUDE_DIRS)
include_directories(${IINCLUDE_DIRS} "." "/usr/include/eigen3")
add_executable (thesis main.cpp ${ISOURCES})
target_link_libraries (thesis pthread boost_program_options)