[cmake-developers] [CMake 0014207]: with PGI compilers, simple C++ program plus C library project fails to link

Mantis Bug Tracker mantis at public.kitware.com
Fri Jun 7 09:01:35 EDT 2013


The following issue has been SUBMITTED. 
====================================================================== 
http://www.cmake.org/Bug/view.php?id=14207 
====================================================================== 
Reported By:                Greg Eisenhauer
Assigned To:                
====================================================================== 
Project:                    CMake
Issue ID:                   14207
Category:                   CMake
Reproducibility:            always
Severity:                   major
Priority:                   normal
Status:                     new
====================================================================== 
Date Submitted:             2013-06-07 09:01 EDT
Last Modified:              2013-06-07 09:01 EDT
====================================================================== 
Summary:                    with PGI compilers, simple C++ program plus C
library project fails to link
Description: 
Attached is a tar file with two simple source files and a CMake spec.  This is a
very simple example of a C++ hello world program including a C library.  The
CMakeList.txt looks like this:

add_library(dummy help.c)
ADD_EXECUTABLE(main main.cpp)
target_link_libraries(main dummy)

The C++ program doesn't actually reference the library, so you can try it with
or without the target_link_libraries() line.  If you try this with the PGI
compilers, and include the dummy library you get a link error, "undefined
reference to `__zceh_uncaught_exception'".  This appears to be because Cmake has
spuriously added -lstdc++ to the link line.  (A manual link without -lstdc++
works without error.)  If you comment out the target_link_libraries(), all is
well, -lstdc++ doesn't appear and the link goes fine.     

Steps to Reproduce: 
# where CC and cc are PGI compilers on Titan
#
untar cmake_test.tar
cd cmake_test.tar
setenv CC cc
setenv CXX CC
cmake .
make

Additional Information: 
-- The C compiler identification is PGI 12.10.0
-- The CXX compiler identification is PGI 12.10.0
I've tested this with cmake 2.8.6, 2.8.10.2, and with a fresh build from GIT. 
I've tested with all the versions of the PGI compilers available on titan.  All
combinations show the same problem of spuriously adding -lstdc++ to the link
line.  

I've tested this on sith.ccs.ornl.gov with various versions of cmake and PGI and
*CANNOT* duplicate the problem.  I don't currently have access to PGI compilers
on any other machines, so this may be something specific to Titan.  I've dumped
all variables and attributes for the two targets, and stdc++ doesn't seem to
appear in anything other than CMAKE_C_IMPLICIT_LINK_LIBRARIES.

Sorry I haven't been able to duplicate this on anything except
titan.ccs.ornl.gov, which is a rather unique and restricted machine, but I know
the folks at kitware collaborate there, so hopefully someone can check this out.
====================================================================== 

Issue History 
Date Modified    Username       Field                    Change               
====================================================================== 
2013-06-07 09:01 Greg EisenhauerNew Issue                                    
2013-06-07 09:01 Greg EisenhauerFile Added: cmake_test.tar                    
======================================================================




More information about the cmake-developers mailing list