我用以下库为ROOT编写了一个宏:
#include <iostream>
#include <math.h>
#include <vector>
#include <iomanip>
#include <time.h>
#include <stdio.h>
#include <gsl/gsl_matrix.h>
#include <gsl/gsl_odeiv2.h>
//ROOT libraries
#include <TTree.h>
#include <TFile.h>
在具有.x script.cpp的ROOT中运行时,它可以正常工作,并且需要0.25秒才能写入根文件。
然后,我使用CMake创建了一个可执行文件。为此,我创建了下一个CMakeLists文件:
此CMakeLists文件位于.cpp文件所在的目录之外
cmake_minimum_required(VERSION 2.6)
project(CMAKE_TEST)
find_package(GSL)
find_package(ROOT REQUIRED COMPONENTS)
set(CMAKE_CXX_FLAGS "-g++ -O2 -Wall")
set(CMAKE_CXX_FLAGS ${ROOT_CXX_FLAGS})
add_subdirectory(script_sub)
这是内部文件(与.cpp文件相同的位置)
include_directories(${CMAKE_TEST_SOURCE_DIR}/script_sub)
link_directories(${CMAKE_TEST_BINARY_DIR}/script_sub)
include(${ROOT_USE_FILE})
set(CORELIBS ${ROOT_LIBRARIES} ${GSL_LIBRARIES} m)
add_executable(script script.cpp)
target_link_libraries(script ${CORELIBS})
CMake可以很好地创建Makefile,然后我也可以毫无问题地运行make
。问题是,当通过./script
运行可执行文件时,这将在0.92秒内写入根文件,即,它比在ROOT中运行代码要慢。结果是正确的,并且没有看到错误消息。
这怎么可能?