View Issue Details Jump to Notes ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0009158CMakeModulespublic2009-06-16 04:352010-08-11 23:35
ReporterNils Gladitz 
Assigned ToPhilip Lowman 
PrioritynormalSeverityminorReproducibilityalways
StatusclosedResolutionfixed 
PlatformOSOS Version
Product VersionCMake-2-6 
Target VersionFixed in Version 
Summary0009158: FindBoost.cmake does not work properly with nmake and icl
DescriptionCC and CXX are set to icl within the C++ Build Environment provided by the Intel compiler (v11) used with Visual Studio 2005.
CMake is at version 2.6.4.
I use the NMake Makefiles generator.

1. FindBoost.cmake currently detects the boost compiler as -vc80 before it can get to the icl detection. Doing the icl detection first solves that problem for me.

2. FindBoost.cmake (with icl detection fixed) can find the static release libraries but not the static debug libraries.
The Module looks for e.g. libboost_thread-iw-mt-sd-1_38 but the installed library is named libboost_thread-iw-mt-gd-1_38.

3. For MSVC Boost_USE_STATIC_LIBS should be the default since the libraries used for automatic linking are static by default.
In my boost install only static libraries are available and FindBoost.cmake tries to locate the dynamic libraries per default.
Resulting in the libraries not being found even though they are neither used nor required with the automatic linking default.
TagsNo tags attached.
Attached Filespatch file icon FindBoostVS2005_ICL.patch [^] (1,269 bytes) 2009-07-20 03:53 [Show Content]
txt file icon boost_1_38_intel_lib_listing.txt [^] (2,956 bytes) 2009-07-20 04:03 [Show Content]
? file icon FindBoost.cmake [^] (39,896 bytes) 2009-09-17 23:25

 Relationships

  Notes
(0016904)
Philip Lowman (developer)
2009-07-18 01:40

Hello,

Sorry nobody has looked at this bug report yet.

Ok, #1 seems like an easy enough fix. If you could attach a patched version that works for you though it would make my life slightly easier because I wouldn't have to bother you to test or assume it works.

0000003: I agree with you but we can't change it now as it would change existing behavior. There are projects in the wild that use boost DLLs and disable auto-linking.

0000002, Can you provide some more information? What are all of the library filenames starting with "libboost_thread-iw" available in your install? Which one should it be picking for your Intel compiler for each case?

Thanks
(0016911)
Nils Gladitz (developer)
2009-07-20 03:59

I tried reproducing the first problem with the NMake generator this morning without success.

I think I inadvertently used the "Visual Studio 8 2005" generator (by not explicitly specifying one) while I was looking for a solution to the second problem.

The Patch I attached should fix that though.

Since there is no "Visual Studio + Intel" generator this allows me to use the Visual Studio generator (with CC/CXX set to icl) and convert the project files for intel afterwards.
(0016912)
Nils Gladitz (developer)
2009-07-20 04:16

I attached a listing of the lib directory of our intel boost 1.38.0 install.
We only build the static libraries with the variants debug and release.

This gives us 4 files per library:

libboost_date_time-iw-mt-1_38.lib <- Release library found correctly by FindBoost.cmake
libboost_date_time-iw-mt-gd-1_38.lib <- Debug library is not currently found

These are probably just copies of the above:
libboost_date_time-iw-mt-gd.lib
libboost_date_time-iw-mt.lib
(0017602)
Philip Lowman (developer)
2009-09-17 23:26

Just got back to looking at this tonight. I believe the problem with 0000003 may be here. "g" is not appended to _boost_ABI_TAG unless we're on MSVC.
    IF(MSVC)
      SET (_boost_ABI_TAG "g")
    ENDIF(MSVC)

Could you test the FindBoost attached and see if it works ok?

It's your patch + the following for adding the "g".

IF(MSVC OR
   "${CMAKE_CXX_COMPILER}" MATCHES "icl" OR
   "${CMAKE_CXX_COMPILER}" MATCHES "icpc")

I have no idea why MSVC90 is true for you and MSVC is false though. That's kinda bizarre. It must have something to do with you using Visual Studio but not MSVC...?
(0017671)
Nils Gladitz (developer)
2009-09-21 11:09

Yes, thank you. That does seem to fix that issue for me.
(0017688)
Philip Lowman (developer)
2009-09-21 22:22

Checked the fix into CVS, should be in 2.8.0. Thanks for opening the bug report.

Committer: Philip Lowman <philip@yhbt.com>
/cvsroot/CMake/CMake/Modules/FindBoost.cmake,v <-- FindBoost.cmake
new revision: 1.44; previous revision: 1.43

 Issue History
Date Modified Username Field Change
2009-06-16 04:35 Nils Gladitz New Issue
2009-07-18 01:33 Philip Lowman Status new => assigned
2009-07-18 01:33 Philip Lowman Assigned To => Philip Lowman
2009-07-18 01:40 Philip Lowman Note Added: 0016904
2009-07-20 03:53 Nils Gladitz File Added: FindBoostVS2005_ICL.patch
2009-07-20 03:59 Nils Gladitz Note Added: 0016911
2009-07-20 04:03 Nils Gladitz File Added: boost_1_38_intel_lib_listing.txt
2009-07-20 04:16 Nils Gladitz Note Added: 0016912
2009-09-17 23:25 Philip Lowman File Added: FindBoost.cmake
2009-09-17 23:26 Philip Lowman Note Added: 0017602
2009-09-21 11:09 Nils Gladitz Note Added: 0017671
2009-09-21 22:22 Philip Lowman Note Added: 0017688
2009-09-21 22:22 Philip Lowman Status assigned => resolved
2009-09-21 22:22 Philip Lowman Resolution open => fixed
2010-08-11 23:35 Philip Lowman Status resolved => closed


Copyright © 2000 - 2018 MantisBT Team