Hi,

Currently, it is not possible to use C++11 mode on Solaris with SolarisStudio 
12.4 (test done on Solaris 11.2 sparc).
If I try a simple executable (see attached file), compilation is OK (option 
–std=c++11 is correctly passed to compiler) but link failed because, with 
SolarisStudio compiler, option –std=c++11 is also required at link time and is 
currently missed.
And unfortunately, it seems there is no equivalent to compile configuration 
variable CMAKE_CXX11_STANDARD_COMPILE_OPTION for the linker so no so easy to 
fix this problem…

Here is the log (see red lines):
/opt/solarisstudio12.4/bin/CC    -std=c++11 -o CMakeFiles/Test.dir/test.cpp.o 
-c /usr/u/i051466/tests/cmake/build/test.cpp
[100%] Linking CXX executable Test
/usr/u/i051466/INSTALL.122/bin/cmake -E cmake_link_script 
CMakeFiles/Test.dir/link.txt --verbose=1
/opt/solarisstudio12.4/bin/CC      CMakeFiles/Test.dir/test.cpp.o  -o Test
Undefined                       first referenced
 symbol                             in file
std::ctype<char>::_M_widen_init()const    CMakeFiles/Test.dir/test.cpp.o
std::ostream::put(char)                         CMakeFiles/Test.dir/test.cpp.o
std::__throw_bad_cast()             CMakeFiles/Test.dir/test.cpp.o
__SUNW_ABIG3_cpp_personality        CMakeFiles/Test.dir/test.cpp.o
__cxxabiv1::register_exit_code(void (*)(void)extern"C") 
CMakeFiles/Test.dir/test.cpp.o
std::ostream::flush()                       CMakeFiles/Test.dir/test.cpp.o
std::cout                           CMakeFiles/Test.dir/test.cpp.o
[Hint: static member std::cout must be defined in the program]

std::ios::clear(std::_Ios_Iostate) CMakeFiles/Test.dir/test.cpp.o
std::ios_base::Init::~Init()             CMakeFiles/Test.dir/test.cpp.o
std::ios_base::Init::Init()             CMakeFiles/Test.dir/test.cpp.o
std::ostream & std::__ostream_insert<char, std::char_traits<char> 
>(std::ostream &,const char*,int) CMakeFiles/Test.dir/test.cpp.o
ld: fatal: symbol referencing errors

FYI:
* If I add option –std=c++11 in the file …/Test.dir/link.txt, link is successful
* I built CMake using version 12.2 of SolarisStudio because if I use 
SolarisStudio 12.4, cmake tool is unsuable (I will sent another mail describing 
this problem).

Marc


cmake_minimum_required (VERSION 3.3.2)

project (Test LANGUAGES CXX)

file (WRITE ${CMAKE_BINARY_DIR}/test.cpp "#include <iostream>\nint main 
()\n{std::cout <<\"Hello\"<<std::endl;return 0;}\n")

set (CMAKE_CXX_STANDARD_REQUIRED ON)
set (CMAKE_CXX_STANDARD 11)

add_executable (Test ${CMAKE_BINARY_DIR}/test.cpp)
-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake-developers

Reply via email to