divyang4481 / firebreath

Automatically exported from code.google.com/p/firebreath
0 stars 0 forks source link

examples build on VS2008 failed with -DWITH_SYSTEM_BOOST=on #95

Open GoogleCodeExporter opened 8 years ago

GoogleCodeExporter commented 8 years ago
What steps will reproduce the problem?
Windows 7 - 32 with VS 2008. Boost 1.44.0

1. prep2008.cmd examples buildex -DWITH_SYSTEM_BOOST=ON 
-DBoost_ADDITIONAL_VERSIONS="1.44;1.44.0" -DBoost_USE_STATIC_LIBS=ON 
-DBOOST_ROOT="%BOOST_ROOT%" -DBoost_DEBUG=OFF -DCMAKE_BUILD_TYPE=Debug
2.cd builex; cmake --build .

In attachment build log with compilation errors

Original issue reported on code.google.com by bignikita on 28 Oct 2010 at 5:09

Attachments:

GoogleCodeExporter commented 8 years ago
this doesn't look like a FireBreath error; the files that are generating the 
link errors are not being referenced by FireBreath, as far as I know.

I have no idea how to fix this;

Original comment by taxilian on 28 Oct 2010 at 5:25

GoogleCodeExporter commented 8 years ago
[deleted comment]
GoogleCodeExporter commented 8 years ago
Fix

E:\Projects\firebreath>hg diff cmake
diff -r 06604e36f76d cmake/common.cmake
--- a/cmake/common.cmake        Tue Oct 26 20:44:15 2010 +0300
+++ b/cmake/common.cmake        Thu Oct 28 10:27:48 2010 +0400
@@ -77,9 +77,10 @@
 endmacro(link_boost_library)

 macro (add_boost_library BOOST_LIB)
-
+       set (_Boost_COMPONENTS thread date_time) # Don't forget to add here new
components
+       message (STATUS "_Boost_COMPONENTS: ${_Boost_COMPONENTS}")
     if (WITH_SYSTEM_BOOST)
-        find_package(Boost COMPONENTS thread REQUIRED)
+        find_package(Boost COMPONENTS ${_Boost_COMPONENTS} REQUIRED)
     else()
         list(APPEND Boost_INCLUDE_DIRS ${BOOST_SOURCE_DIR})
         list(REMOVE_DUPLICATES Boost_INCLUDE_DIRS)

Original comment by bignikita on 28 Oct 2010 at 6:28

GoogleCodeExporter commented 8 years ago
ahh... that shouldn't have been hardcoded to thread, it should be ${BOOST_LIB}

we also shouldn't have a list of components; add_boost_library should be called 
once (or more) for each boost component needed.  If date_time is needed, 
add_boost_library(date_time) should be called, which will then do the right 
thing.

The bug here is that thread is hardcoded.  Can you try this and make sure it 
works?  If so, I'll fix it in 1.3 before I deploy tomorrow evening.

Original comment by taxilian on 28 Oct 2010 at 7:23

GoogleCodeExporter commented 8 years ago
Examples was compiled successful with this changes:
E:\Projects\firebreath>hg diff
diff -r 06604e36f76d CMakeLists.txt
--- a/CMakeLists.txt    Tue Oct 26 20:44:15 2010 +0300
+++ b/CMakeLists.txt    Thu Oct 28 14:28:56 2010 +0400
@@ -36,6 +36,9 @@

 find_package(Threads REQUIRED)
 add_boost_library(thread)
+add_boost_library(date_time)
+
+

 # Common core projects -- projects that don't have any plugin specific code,
 # but are required before any plugins are loaded
diff -r 06604e36f76d cmake/common.cmake
--- a/cmake/common.cmake        Tue Oct 26 20:44:15 2010 +0300
+++ b/cmake/common.cmake        Thu Oct 28 14:28:56 2010 +0400
@@ -77,9 +77,8 @@
 endmacro(link_boost_library)

 macro (add_boost_library BOOST_LIB)
-
     if (WITH_SYSTEM_BOOST)
-        find_package(Boost COMPONENTS thread REQUIRED)
+        find_package(Boost COMPONENTS ${BOOST_LIB} REQUIRED)
     else()
         list(APPEND Boost_INCLUDE_DIRS ${BOOST_SOURCE_DIR})
         list(REMOVE_DUPLICATES Boost_INCLUDE_DIRS)

Original comment by bignikita on 28 Oct 2010 at 10:30

GoogleCodeExporter commented 8 years ago
I'm not sure what to do about this beyond what we have already done, in fixing 
the add_boost_library. 

Most system boost installations use autolink; for now we will rely on those.  
I'm open to reasonable suggestions/patches for fixing this.  I do not want to 
add date_time as a required library for all projects, however, since it is not 
normally needed.  No idea why system boost would require it.

Original comment by taxilian on 9 Nov 2010 at 11:41