2
我試圖用升壓試驗單位編譯使用Boost測試單位++ 11
#define BOOST_TEST_MODULE My Test
#include <boost/test/included/unit_test.hpp>
BOOST_AUTO_TEST_CASE(first_test) { int i = 1; BOOST_CHECK(i == 1); }
如果我編譯這個小程序不帶參數編譯一個非常簡單的程序,
g++ test1.cpp
沒有問題。但是,如果我嘗試使用C++ 11標準,
g++ test1.cpp -std=c++11
我得到一些錯誤:
In file included from /usr/include/boost/test/included/unit_test.hpp:19:0,
from test1.cpp:2: /usr/include/boost/test/impl/debug.ipp: En la función ‘const char* boost::debug::{anónimo}::prepare_gdb_cmnd_file(const boost::debug::dbg_startup_info&)’: /usr/include/boost/test/impl/debug.ipp:426:23: error: ‘::mkstemp’ no se ha declarado
fd_holder cmd_fd(::mkstemp(cmd_file_name));
^In file included from /usr/include/boost/test/included/unit_test.hpp:19:0,
from test1.cpp:2: /usr/include/boost/test/impl/debug.ipp: En la función ‘bool boost::debug::attach_debugger(bool)’: /usr/include/boost/test/impl/debug.ipp:863:34: error: ‘::mkstemp’ no se ha declarado
fd_holder init_done_lock_fd(::mkstemp(init_done_lock_fn));
^In file included from /usr/include/boost/test/utils/runtime/cla/dual_name_parameter.hpp:19:0,
from /usr/include/boost/test/impl/unit_test_parameters.ipp:31,
from /usr/include/boost/test/included/unit_test.hpp:33,
from test1.cpp:2: /usr/include/boost/test/utils/runtime/config.hpp: En la función ‘void boost::runtime::putenv_impl(boost::runtime::cstring, boost::runtime::cstring)’: /usr/include/boost/test/utils/runtime/config.hpp:95:51: error: ‘putenv’ no se declaró en este ámbito
putenv(const_cast<char*>(fs.str().c_str()));
(編譯是西班牙語)
我使用:
Cygwin的64位
Cygwin的升壓1.59
Cygwin的G ++ 4.9.3
任何幫助將受到歡迎。謝謝。 José.-
「mkstemp」不是C++標準函數。你嘗試過'std = gnu ++ 11'來獲得一些擴展嗎? –
@BoPersson作品。請將您的評論作爲答案。 我以爲'std = C++ 11'和'std = gnu ++ 11'在只安裝gnu C++的環境中是一樣的:c。請你解釋一下爲什麼會發生這種情況? –
這只是一個猜測。這些選項就像「嚴格的C++標準」vs「一些Posix和東西添加」。我不知道確切的細節。 –