Hi all,
now I got it:
There are 3 different problems:
1.) never use an absolute DESTINATION path with INSTALL commands!
###XXX### INSTALL( FILES cmake/FindLibSmi.cmake DESTINATION $
{CMAKE_ROOT}/Modules )
2.) never use an absolute source Path!
###XXX### INSTALL( FILES ${CMAKE_BINARY_DIR}/libsmi.pc DESTINATION
lib/pkgconfig )
3) never use a Windows drive letter in one of this paths as "C:/usr"
with CMAKE_INSTALL_PREFIX=C:/usr
###XXX### INSTALL( FILES smi.conf-example DESTINATION $
{CMAKE_INSTALL_PREFIX}/${CMAKE_SYSTEMCONFIG} )
If not, you will get problems in some cases like crosscompile:
test -d build/CMakeFiles && rm -rf build/*
cd build && cmake -DCMAKE_C_COMPILER=i386-mingw32-gcc -
DCMAKE_CXX_COMPILER=i386-mingw32-g++ -DCMAKE_SYSTEM_NAME=Windows .. \
&& make 2>&1 | tee ../crosscompile.log
. . . .
+ make DESTDIR=/tmp/libsmi install/local
+ tee ../temp-install.log
[ 1%] Built target generate_dump_svg_script_h
[ 3%] Built target backend_smi_bison
[ 5%] Built target backend_sming_bison
[ 6%] Built target backend_smi_flex
[ 8%] Built target backend_sming_flex
[ 8%] Built target generated
[ 34%] Built target smi
[ 37%] Built target smidiff
[ 87%] Built target smidump
[ 91%] Built target smilint
[ 94%] Built target smiquery
[100%] Built target smixlate
Installing only the local directory...
-- Install configuration: "Release"
CMake Error at cmake_install.cmake:31 (FILE):
file cannot create directory:
/tmp/libsmi/Users/clausklein/Workspace/c/libsmi/libsmi-latejuly09-
cmake/build/C:/usr/lib/pkgconfig.
Maybe need administrative privileges.
make: *** [install/local] Error 1
+ cmake -DCMAKE_INSTALL_PREFIX=C:/usr -DCMAKE_INSTALL_LOCAL_ONLY=1 -P
cmake_install.cmake
+ tee ../temp-install.log
-- Install configuration: "Release"
-- Installing: /Users/clausklein/Workspace/c/libsmi/libsmi-latejuly09-
cmake/build/C:/usr/lib/pkgconfig/libsmi.pc
-- Installing: /Users/clausklein/Workspace/c/libsmi/libsmi-latejuly09-
cmake/build/C:/usr/lib/pkgconfig/libsmi.pc
-- Installing: /Users/clausklein/Workspace/c/libsmi/libsmi-latejuly09-
cmake/build/C:/usr/etc/smi/smi.conf/smi.conf-example
-- Installing: /Users/clausklein/Workspace/c/libsmi/libsmi-latejuly09-
cmake/build/C:/usr/C:/usr/etc/smi/smi.conf/smi.conf-example <<<<
really bad!
-- Installing: /Users/clausklein/Workspace/c/libsmi/libsmi-latejuly09-
cmake/build/C:/usr/share/cmake/Modules/FindLibSmi.cmake
-- Installing: /opt/local/share/cmake-2.8/Modules/FindLibSmi.cmake
CMake Error at cmake_install.cmake:51 (FILE):
file INSTALL cannot copy file
"/Users/clausklein/Workspace/c/libsmi/libsmi-latejuly09-cmake/cmake/
FindLibSmi.cmake"
to "/opt/local/share/cmake-2.8/Modules/FindLibSmi.cmake".
+ cmake -DCMAKE_INSTALL_PREFIX=/tmp/libsmi/usr -
DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake
+ tee ../temp-install.log
-- Install configuration: "Release"
-- Up-to-date: /tmp/libsmi/usr/lib/pkgconfig/libsmi.pc
-- Installing: /tmp/libsmi/usr/lib/pkgconfig/libsmi.pc
-- Up-to-date: /tmp/libsmi/usr/etc/smi/smi.conf/smi.conf-example
-- Installing: /tmp/libsmi/usr/C:/usr/etc/smi/smi.conf/smi.conf-example
-- Up-to-date: /tmp/libsmi/usr/share/cmake/Modules/FindLibSmi.cmake
-- Installing: /opt/local/share/cmake-2.8/Modules/FindLibSmi.cmake
CMake Error at cmake_install.cmake:51 (FILE):
file INSTALL cannot copy file
"/Users/clausklein/Workspace/c/libsmi/libsmi-latejuly09-cmake/cmake/
FindLibSmi.cmake"
to "/opt/local/share/cmake-2.8/Modules/FindLibSmi.cmake".
+ exit
claus-kleins-macbook-pro:libsmi-latejuly09-cmake clausklein$
I hope you see that something should changed with make install.
//regards
Claus
On 08.01.2010, at 22:26, Claus Klein wrote:
Hi David,
Yes, this works fine when I change the CMAKE_INSTALL_PREFIX at
CMakeCache.txt, sure.
There is only one fault: the config files will be rebuild with the
wrong path before install :-((
At least, I know 2 packages, NetSnmp and LibSmi, they has to be
compiled with fix absolute paths,
including the device name on Windows, that is not my idea! It would
be better to use a ConfigFile and
the program can be install at any place. But they is a history and
they needs there MIB's.
(What is the current drive to find this config file when I start c:/
usr/bin/smilint from d:/workdir?)
When I add the string replace command to the cmake_install.cmake
file, it works as a quick hack.
This should only remove the drive string in the middle, not the
beginning of the PREFIX path:
STRING(REGEX REPLACE "/[A-Za-z]:/" "/" CMAKE_INSTALL_PREFIX "$
{CMAKE_INSTALL_PREFIX}")
But I know that this can't be the general solution.
I did not see any DESTDIR in this file, so I think it will be set as
parameter or in environment?
Only if DESTDIR is given, this drive name has to be replace.
Where is the DESTDIR prepended to the PREFIX?
Is there a template for this generated cmake_install.cmake?
Claus
On 08.01.2010, at 17:49, David Cole wrote:
On Fri, Jan 8, 2010 at 12:37 AM, Claus Klein <claus.kl...@arcormail.de
> wrote:
On 08.01.2010, at 02:25, Alexander Neundorf wrote:
On Thursday 07 January 2010, Claus Klein wrote:
Hi
i want to install a cross compiled (build host is a MAC OS X) project
to a temporary state dir to get an archive to distribute the
binaries.
The target is win32 (mingw), compiled to be installed at c:/usr as
CMAKE_INSTALL_PREFIX.
This prefix is used while compile the binaries, so I can't change it.
I think, that when I use DESTDIR while "make DESTDIR=/tmp/cmake
install", the device (C:) should be removed before to use it as part
of a path like this:
STRING(REGEX REPLACE "[A-Za-z:/]" "" CMAKE_INSTALL_PREFIX "$
{CMAKE_INSTALL_PREFIX}")
head cmake_install.cmake
# Install script for directory: /Users/clausklein/Workspace/c/libsmi/
trunk
#
# Set the install prefix
IF(NOT DEFINED CMAKE_INSTALL_PREFIX)
SET(CMAKE_INSTALL_PREFIX "C:/usr")
ENDIF(NOT DEFINED CMAKE_INSTALL_PREFIX)
STRING(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "$
{CMAKE_INSTALL_PREFIX}")
. . . .
As you can see, PREFIX is appended to DESDIR without modification.
which is wrong in this special case.
Yes. So you would suggest to remove the drive letter from
CMAKE_INSTALL_PREFIX
when installing with DESTDIR set ?
Alex
Yes
I think it is never a valid path in this case to on Windows itself:
i.e. C:/tmp/cmake/C:/usr/lib/pkgconfig
I want to create a zip archive at /tmp/cmake to install it on
Windows under C:/
Claus
_______________________________________________
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
Can you try setting CMAKE_INSTALL_PREFIX to just "/usr" instead of
"C:/usr" to see if you can get what you want in that manner...?
_______________________________________________
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
_______________________________________________
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