[CMake] Headers don't install on Mac OS X (mysql-connector-c)
Braden McDaniel
braden at endoframe.com
Thu Apr 26 17:29:14 EDT 2012
On 4/26/12 2:45 PM, Eric Noulard wrote:
> 2012/4/26 Braden McDaniel<braden at endoframe.com>:
>> 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
More information about the CMake
mailing list