MantisBT - CMake | |||||
| View Issue Details | |||||
| ID | Project | Category | View Status | Date Submitted | Last Update |
| 0007108 | CMake | CMake | public | 2008-05-28 04:18 | 2016-06-10 14:30 |
| Reporter | axel.roebel | ||||
| Assigned To | Bill Hoffman | ||||
| Priority | normal | Severity | major | Reproducibility | always |
| Status | closed | Resolution | moved | ||
| Platform | OS | OS Version | |||
| Product Version | |||||
| Target Version | Fixed in Version | ||||
| Summary | 0007108: to_native_path/to_cmake_path completely broken on cygwin | ||||
| Description | Hello I am running cmake under cygwin on windows with some Platform files adapted to be able to use the intel compiler. I am trying to find the include files (and libraries) of Intels mkl libraries with the following cmake code IF(WIN32) IF(MSVC OR CMAKE_CXX_COMPILER_ID STREQUAL "Intel" OR CMAKE_COMPILER_IS_MINGW ) IF(CMAKE_GENERATOR MATCHES "^Unix Makefiles") FILE(GLOB MKL_INCLUDE_PATH_LIST_TMP "/cygdrive/c/Program Files/Intel/MKL/*/include") FILE(GLOB MKL_LIB_PATH_LIST_TMP "/cygdrive/c/Program Files/Intel/MKL/*/ia32/lib") ELSE(CMAKE_GENERATOR MATCHES "^Unix Makefiles") FILE(GLOB MKL_INCLUDE_PATH_LIST_TMP "C:/Program Files/Intel/MKL/*/include") FILE(GLOB MKL_LIB_PATH_LIST_TMP "C:/Program Files/Intel/MKL/*/ia32/lib") ENDIF(CMAKE_GENERATOR MATCHES "^Unix Makefiles") ENDIF(MSVC OR CMAKE_CXX_COMPILER_ID STREQUAL "Intel" OR CMAKE_COMPILER_IS_MINGW) ELSE(WIN32) FILE(GLOB MKL_INCLUDE_PATH_LIST_TMP /opt/intel/mkl/*/include ) FILE(GLOB MKL_LIB_PATH_LIST_TMP /opt/intel/mkl/*/lib/${MKL_BITDIRSUF_TMP}) ENDIF(WIN32) FIND_PATH(MKL_INCLUDE_PATH_TMP mkl_dfti.h PATHS /usr/include /usr/local/include /u/formes/share/include ${MKL_INCLUDE_PATH_LIST_TMP} ) Now in cmake 2.4.8 this returned /cygdrive/c/Program Files/Intel/MKL/10.0.1.014/include while in cmake 2.6.0 it creates c:\Program Files\Intel\MKL\10.0.1.014\include a path that it found in the environment variable INCLUDE I would have expected that in a unix makefile generator the variable should be automatically converted to unix path style. Then I thought to use the to_cmake_path/to_native_path facilities to convert the path to unix flavor. (BTW I am not quite sure what native means in cygwin compiled cmake on windows). Neither of these two did anything useful though. Both ended up with something like "c" "/Program Files/Intel/MKL/10.0.1.014/include" which after looking in the source code is obviously due to the fact that the fist thing the TO_*_PATH commands do is #if defined(_WIN32) && !defined(__CYGWIN__) char pathSep = ';'; #else char pathSep = ':'; #endif std::vector<cmsys::String> path = cmSystemTools::SplitString(i->c_str(), pathSep); this means for CYGWIN it will always use ":" as path separator splitting the c from the rest and then converting to unix style path. So in short the path conversion for cygwin is working only in one (completely useless) case: unix style path -> unix style path | ||||
| Steps To Reproduce | |||||
| Additional Information | |||||
| Tags | No tags attached. | ||||
| Relationships | |||||
| Attached Files | |||||
| Issue History | |||||
| Date Modified | Username | Field | Change | ||
| 2008-05-28 04:18 | axel.roebel | New Issue | |||
| 2008-08-19 16:01 | Bill Hoffman | Status | new => assigned | ||
| 2008-08-19 16:01 | Bill Hoffman | Assigned To | => Bill Hoffman | ||
| 2016-06-10 14:27 | Kitware Robot | Note Added: 0041429 | |||
| 2016-06-10 14:27 | Kitware Robot | Status | assigned => resolved | ||
| 2016-06-10 14:27 | Kitware Robot | Resolution | open => moved | ||
| 2016-06-10 14:30 | Kitware Robot | Status | resolved => closed | ||
| Notes | |||||
|
|
|||||
|
|
||||