On 4/26/12 2:45 PM, Eric Noulard wrote:
2012/4/26 Braden McDaniel<[email protected]>:
I'm building mysql-connector-c-6.0.2, which uses cmake, on Mac OS X 10.7.3
using MacPorts cmake 2.8.7. I have found that "make install" does not
actually install the project's header files.
When I tried to reproduce this on Linux (Fedora 16), it worked just fine; so
it looks like this is a Mac-specific (or perhaps even more specific)
problem.
I'm a total novice at CMake; but I see this in the top-level CMakeLists.txt:
INSTALL(DIRECTORY "include/"
DESTINATION "include"
FILES_MATCHING PATTERN "*.h")
Looking at
http://www.cmake.org/cmake/help/cmake-2-8-docs.html#command:install
... I don't see anything obviously wrong with that usage.
The package in question can be found here:
http://mysql.mirrors.pair.com/Downloads/Connector-C/mysql-connector-c-6.0.2.tar.gz
This package is dirty because it contains many files coming from some
Sparc configuration, the following files are coming from a previous in-source
leftover:
Makefile
CMakeFiles
cmake_install.cmake
CPackConfig.cmake
CPackSourceConfig.cmake
CTestTestfile.cmake
Remove those files from the source and try
a clean out-of-source build& install:
http://www.cmake.org/Wiki/CMake_FAQ#Out-of-source_build_trees
I've seen some traffic that led me to question whether this distribution
works with out-of-source builds; so I did
find . \( -name Makefile -o -name CMakeFiles -type d -prune -o -name
cmake_install.cmake -o -name CPackConfig.cmake -o -name CPackSourceConfig.cmake
-o -name CTestTestfile.cmake \) -exec rm -rf {} ';'
and proceeded with an in-source-tree build.
Header files were still not installed.
So, I got the latest sources from launchpad:
bzr branch lp:libmysql
This version has something slightly different in CMakeLists.txt to
install the headers:
INSTALL(DIRECTORY "${CMAKE_SOURCE_DIR}/include/"
DESTINATION "include/mysql"
FILES_MATCHING PATTERN "*.h")
INSTALL(DIRECTORY "${CMAKE_BINARY_DIR}/include/"
DESTINATION "include/mysql"
FILES_MATCHING PATTERN "*.h")
So, from there, I proceeded with an out-of-source-tree build.
Once again, the headers were not installed.
I began to be suspicious of the possibility of a platform-specific CMake
bug affecting the file selector (possibly in the pattern matching). So
I tried eliminating the pattern selectors from the install directives:
INSTALL(DIRECTORY "${CMAKE_SOURCE_DIR}/include/"
DESTINATION "include/mysql")
INSTALL(DIRECTORY "${CMAKE_BINARY_DIR}/include/"
DESTINATION "include/mysql")
This successfully installs the headers (and possibly a bit more).
Braden
--
Powered by www.kitware.com
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
Please keep messages on-topic and check the CMake FAQ at:
http://www.cmake.org/Wiki/CMake_FAQ
Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake