MantisBT - CMake |
View Issue Details |
|
ID | Project | Category | View Status | Date Submitted | Last Update |
0013765 | CMake | CMake | public | 2012-11-30 15:02 | 2013-07-01 09:38 |
|
Reporter | Jean-Christophe Fillion-Robin | |
Assigned To | Brad King | |
Priority | high | Severity | major | Reproducibility | always |
Status | closed | Resolution | fixed | |
Platform | | OS | | OS Version | |
Product Version | CMake 2.8.10.2 | |
Target Version | CMake 2.8.11 | Fixed in Version | CMake 2.8.11 | |
|
Summary | 0013765: Failed to link against framework in /Library/Framework when CMAKE_OSX_* variables are set |
Description | Failed to link against framework in /Library/Framework when CMAKE_OS_* variables are set
The problem occurs when using:
- CMake 2.8.10.2
- mac OSX 10.8
- XCode Version 4.5.2 (4G2008a)
- g++ --version i686-apple-darwin11-llvm-g++-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)
After installing qt 4.7.4: ftp://ftp.qt.nokia.com/qt/source/qt-mac-opensource-4.7.4.dmg [^]
This small project allows to reproduce the problem.
$ git clone git://github.com/jcfr/CMakeWithQtFramework.git [^]
$ mkdir CMakeWithQtFramework-build
$ cd CMakeWithQtFramework-build
$ cmake ../
[…]
$ make VERBOSE=1
[…]
Linking CXX executable foo
"/Volumes/Dashboards/Support/CMake 2.8-10.app/Contents/bin/cmake" -E cmake_link_script CMakeFiles/foo.dir/link.txt --verbose=1
/usr/bin/c++ -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk -mmacosx-version-min=10.8 -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/foo.dir/main.cpp.o -o foo -framework QtWebKit -framework QtXmlPatterns -framework QtGui -framework QtNetwork -framework QtCore
ld: framework not found QtWebKit
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [foo] Error 1
make[1]: *** [CMakeFiles/foo.dir/all] Error 2
make: *** [all] Error 2
By manually adding -F /Library/Frameworks to the build line, it succeed.
/usr/bin/c++ -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk -mmacosx-version-min=10.8 -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/foo.dir/main.cpp.o -o foo -framework QtWebKit -framework QtXmlPatterns -framework QtGui -framework QtNetwork -framework QtCore -F /Library/Frameworks/
I would assume that CMake should automatically add the "-F /Library/Frameworks/"
|
Steps To Reproduce | |
Additional Information | |
Tags | No tags attached. |
Relationships | |
Attached Files | |
|
Issue History |
Date Modified | Username | Field | Change |
2012-11-30 15:02 | Jean-Christophe Fillion-Robin | New Issue | |
2012-11-30 15:18 | Brad King | Note Added: 0031786 | |
2012-11-30 15:38 | Jean-Christophe Fillion-Robin | Note Added: 0031789 | |
2012-11-30 15:43 | Brad King | Note Added: 0031790 | |
2012-11-30 15:53 | Jean-Christophe Fillion-Robin | Note Added: 0031791 | |
2012-12-03 09:22 | Brad King | Note Edited: 0031791 | bug_revision_view_page.php?bugnote_id=31791#r956 |
2012-12-03 09:23 | Brad King | Target Version | => CMake 2.8.11 |
2012-12-03 09:23 | Brad King | Summary | Failed to link against framework in /Library/Framework when CMAKE_OS_* variables are set => Failed to link against framework in /Library/Framework when CMAKE_OSX_* variables are set |
2012-12-03 09:23 | Brad King | Description Updated | bug_revision_view_page.php?rev_id=958#r958 |
2012-12-03 09:30 | Brad King | Note Added: 0031817 | |
2012-12-03 17:52 | Jean-Christophe Fillion-Robin | Note Added: 0031824 | |
2012-12-03 17:53 | Jean-Christophe Fillion-Robin | Note Edited: 0031824 | bug_revision_view_page.php?bugnote_id=31824#r960 |
2012-12-04 08:12 | Brad King | Note Added: 0031826 | |
2012-12-05 12:12 | Jean-Christophe Fillion-Robin | Note Edited: 0031824 | bug_revision_view_page.php?bugnote_id=31824#r967 |
2013-01-30 06:01 | Dimitri Merejkowsky | Note Added: 0032177 | |
2013-01-30 09:09 | Brad King | Note Added: 0032178 | |
2013-01-30 09:09 | Brad King | Assigned To | => Brad King |
2013-01-30 09:09 | Brad King | Status | new => resolved |
2013-01-30 09:09 | Brad King | Resolution | open => fixed |
2013-01-30 09:09 | Brad King | Fixed in Version | => CMake 2.8.11 |
2013-01-30 09:11 | Brad King | Note Added: 0032179 | |
2013-02-15 12:01 | Jean-Christophe Fillion-Robin | Note Added: 0032289 | |
2013-02-15 12:01 | Jean-Christophe Fillion-Robin | Status | resolved => feedback |
2013-02-15 12:01 | Jean-Christophe Fillion-Robin | Resolution | fixed => reopened |
2013-02-15 12:51 | Brad King | Note Added: 0032290 | |
2013-02-15 13:35 | Jean-Christophe Fillion-Robin | Note Added: 0032292 | |
2013-02-15 13:35 | Jean-Christophe Fillion-Robin | Status | feedback => assigned |
2013-02-15 13:37 | Steve Pieper | Note Added: 0032293 | |
2013-02-15 13:42 | Jean-Christophe Fillion-Robin | Note Added: 0032294 | |
2013-02-15 13:47 | Steve Pieper | Note Added: 0032295 | |
2013-02-15 14:01 | Jean-Christophe Fillion-Robin | Note Added: 0032296 | |
2013-02-15 14:10 | Steve Pieper | Note Added: 0032297 | |
2013-02-15 15:25 | Greg Sharp | Note Added: 0032298 | |
2013-02-17 11:41 | Jean-Christophe Fillion-Robin | Note Added: 0032318 | |
2013-02-18 08:25 | Brad King | Note Added: 0032322 | |
2013-02-18 08:25 | Brad King | Status | assigned => resolved |
2013-02-18 08:25 | Brad King | Resolution | reopened => fixed |
2013-02-25 11:37 | Jean-Christophe Fillion-Robin | Note Added: 0032378 | |
2013-02-25 11:37 | Jean-Christophe Fillion-Robin | Status | resolved => feedback |
2013-02-25 11:37 | Jean-Christophe Fillion-Robin | Resolution | fixed => reopened |
2013-02-25 11:58 | Brad King | Note Added: 0032379 | |
2013-02-25 11:58 | Brad King | Status | feedback => resolved |
2013-02-25 11:58 | Brad King | Resolution | reopened => fixed |
2013-07-01 09:38 | Robert Maynard | Note Added: 0033434 | |
2013-07-01 09:38 | Robert Maynard | Status | resolved => closed |
Notes |
|
(0031786)
|
Brad King
|
2012-11-30 15:18
|
|
You're asking the build to use a given SDK but that SDK does not provide the frameworks you're using. On older Mac versions e.g. 10.6 the SDKs had a symlink to make /Library/Frameworks available. CMake needs to account for the lack of this symlink in newer versions. |
|
|
(0031789)
|
Jean-Christophe Fillion-Robin
|
2012-11-30 15:38
|
|
As a workaround, to create the symlinks, should I use something like:
for file in `ls -1 /Library/Frameworks/`; do sudo ln -s /Library/Frameworks/$file /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/System/Library/Frameworks/$file; done
.. or is there a simpler way ? |
|
|
(0031790)
|
Brad King
|
2012-11-30 15:43
|
|
Re 0013765:0031789: I think adding "-F /Library/Frameworks" to CMAKE_EXE_LINKER_FLAGS, CMAKE_SHARED_LINKER_FLAGS, and CMAKE_MODULE_LINKER_FLAGS in your build tree is the simplest workaround. Don't hack your system files for this. |
|
|
(0031791)
|
Jean-Christophe Fillion-Robin
|
2012-11-30 15:53
(edited on: 2012-12-03 09:22) |
|
Since I would like to be able to build Slicer with superbuild VTK, CTK (superbuilding itself PythonQt, QTTesting ...) .. it gonna be a painful process to ensure the flag is properly added in all the project relying on Qt. I would have to patch all these projects ...
The time being, I think I will simply create the symlinks ...
|
|
|
(0031817)
|
Brad King
|
2012-12-03 09:30
|
|
Re 0013765:0031791: If you create the symlinks then you should do something like
mkdir /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/Library
ln -s /Library/Frameworks /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/Library/
instead. I think just that one link will be enough. |
|
|
(0031824)
|
Jean-Christophe Fillion-Robin
|
2012-12-03 17:52
(edited on: 2012-12-05 12:12) |
|
Just tried the single symlink approach and it wasn't successful.
Using this approach works:
cd /Library/Frameworks
for file in Qt*; do sudo ln -s /Library/Frameworks/$file /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/System/Library/Frameworks/$file; done
for file in Qt*; do sudo ln -s /Library/Frameworks/$file /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/System/Library/Frameworks/$file; done
Also need to create link for phonon framework
|
|
|
(0031826)
|
Brad King
|
2012-12-04 08:12
|
|
Add "-Wl,-v" to the link line by hand to get verbose output about the framework search path in use. |
|
|
(0032177)
|
Dimitri Merejkowsky
|
2013-01-30 06:01
|
|
Maybe related : when using the following file:
cmake_minimum_required(VERSION 2.8.10)
project(two_frameworks)
list(APPEND CMAKE_FRAMEWORK_PATH
/Users/dmerejkowsky/.local/share/qi/toolchains/mac64/ogre/)
list(APPEND CMAKE_FRAMEWORK_PATH
/Users/dmerejkowsky/.local/share/qi/toolchains/mac64/ogre/)
find_library(OGRE_LIBRARIES NAMES Ogre)
find_library(QT_LIBRARIES NAMES QtCore)
add_executable(foo foo.cpp)
target_link_libraries(foo ${OGRE_LIBRARIES} ${QT_LIBRARIES})
and building, you can see the generated command line looks like:
/usr/bin/c++ -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/foo.dir/foo.cpp.o -o foo -F/Users/dmerejkowsky/.local/share/qi/toolchains/mac64/ogre -F/Users/dmerejkowsky/.local/share/qi/toolchains/mac64/qt -framework Ogre -framework QtCore
Note the lack of -F/Users/dmerejkowsky/.local/share/qi/toolchains/mac64/qt
The problem did not occur in CMake 2.8.9, and I can reproduce this with CMake 2.8.10 |
|
|
(0032178)
|
Brad King
|
2013-01-30 09:09
|
|
|
|
(0032179)
|
Brad King
|
2013-01-30 09:11
|
|
|
|
(0032289)
|
Jean-Christophe Fillion-Robin
|
2013-02-15 12:01
|
|
From Steve Pieper - See http://na-mic.org/Bug/view.php?id=2954 [^]
On mac os 10.8 with xcode 4.6 and cmake version 2.8.10.20130215-g57833 (the latest next branch as of today).
Trying to build a module results in the following kind of error:
[ 5%] Building CXX object Logic/CMakeFiles/vtkSlicerNewModuleModuleLogic.dir/vtkSlicerNewModuleLogic.cxx.o
Linking CXX shared library ../lib/Slicer-4.2/qt-loadable-modules/libvtkSlicerNewModuleModuleLogic.dylib
ld: framework not found QtScript
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [lib/Slicer-4.2/qt-loadable-modules/libvtkSlicerNewModuleModuleLogic.dylib] Error 1
make[1]: *** [Logic/CMakeFiles/vtkSlicerNewModuleModuleLogic.dir/all] Error 2
make: *** [all] Error 2 |
|
|
(0032290)
|
Brad King
|
2013-02-15 12:51
|
|
Re 0013765:0032289: Can this be reproduced on a simple example project outside the Slicer superbuild? |
|
|
(0032292)
|
Jean-Christophe Fillion-Robin
|
2013-02-15 13:35
|
|
|
|
(0032293)
|
Steve Pieper
|
2013-02-15 13:37
|
|
I had no problem building the simple example.
0000010 CMakeWithQtFramework-build (master>)$ cmake --version
cmake version 2.8.10.20130215-g57833
#11 CMakeWithQtFramework-build (master>)$ cmake ../CMakeWithQtFramework
-- Setting OSX_ARCHITECTURES to 'x86_64' as none was specified.
-- Setting OSX_DEPLOYMENT_TARGET to '10.8' as none was specified.
-- Setting OSX_SYSROOT to '/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk' as none was specified.
-- The C compiler identification is Clang 4.0.0
-- The CXX compiler identification is Clang 4.0.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Looking for Q_WS_X11
-- Looking for Q_WS_X11 - not found
-- Looking for Q_WS_WIN
-- Looking for Q_WS_WIN - not found
-- Looking for Q_WS_QWS
-- Looking for Q_WS_QWS - not found
-- Looking for Q_WS_MAC
-- Looking for Q_WS_MAC - found
-- Looking for QT_MAC_USE_COCOA
-- Looking for QT_MAC_USE_COCOA - found
-- Found Qt4: /usr/bin/qmake (found version "4.8.3")
-- Configuring done
-- Generating done
-- Build files have been written to: /tmp/CMakeWithQtFramework-build
0000012 CMakeWithQtFramework-build (master %>)$ make
Scanning dependencies of target foo
[100%] Building CXX object CMakeFiles/foo.dir/main.cpp.o
Linking CXX executable foo
[100%] Built target foo |
|
|
(0032294)
|
Jean-Christophe Fillion-Robin
|
2013-02-15 13:42
|
|
@Steve: Do you confirm that the QT_QMAKE_EXECUTABLE variable from the CMakeCache.txt points to Qt having Frameworks ? If it points to a Qt you built yourself, the problem wouldn't occur. |
|
|
(0032295)
|
Steve Pieper
|
2013-02-15 13:47
|
|
Both slicer and the CMakeWithQtFramework are using /usr/bin/qmake, which is:
0000019 NewModule-build (master %>)$ qmake --version
QMake version 2.01a
Using Qt version 4.8.3 in /Library/Frameworks
0000020 NewModule-build (master %>)$ which qmake
/usr/bin/qmake |
|
|
(0032296)
|
Jean-Christophe Fillion-Robin
|
2013-02-15 14:01
|
|
In that case, it seems to be specific to Slicer. Could you provide remote access to Brad ? |
|
|
(0032297)
|
Steve Pieper
|
2013-02-15 14:10
|
|
I only have the issue with my laptop right now. Let me see if I can replicate it on a machine with a public IP where I can give him an account.
But I agree this is something specific to building slicer loadable modules. |
|
|
(0032298)
|
Greg Sharp
|
2013-02-15 15:25
|
|
The cmake nightly solved this problem for me.
OSX 10.7
xcode 4.6 (4H127)
cmake-2.8.10.20130213-g7665b (built from source)
However, I had infinite loop instead, linked here in case it is related.
http://www.cmake.org/Bug/view.php?id=13926 [^] |
|
|
(0032318)
|
Jean-Christophe Fillion-Robin
|
2013-02-17 11:41
|
|
|
|
(0032322)
|
Brad King
|
2013-02-18 08:25
|
|
|
|
(0032378)
|
Jean-Christophe Fillion-Robin
|
2013-02-25 11:37
|
|
While it is possible to build Slicer without any trouble. There is issue to build Slicer extensions against Slicer build tree.
The experiment has been documented here: http://na-mic.org/Mantis/view.php?id=2954#c8038 [^]
If needed, I could:
1) Provide access to the machine with a build tree
2) Provide the complete link command |
|
|
(0032379)
|
Brad King
|
2013-02-25 11:58
|
|
This issue is resolved AFAICT. Please do not re-open it unless you have a minimal example project that reproduces it on more than one computer. Keep the discussion over in Slicer's issue until you've identified that it is really a CMake problem and narrowed it down to a minimal example. The details of narrowing the case from Slicer's build process to a small example are not of interest to this issue.
|
|
|
(0033434)
|
Robert Maynard
|
2013-07-01 09:38
|
|
Closing resolved issues that have not been updated in more than 4 months. |
|