[CMake] confused on default actions in find_path and find_library on Mac

quanzhao198757 at sina.com quanzhao198757 at sina.com
Thu Mar 3 04:10:21 EST 2016


I want to use libpng.dylib in my project, and there is a libpng(version1.6) installed by brew:  $ ll /Users/quanzhao/git-space/homebrew/lib/libpng.dylib  $ ll /Users/quanzhao/git-space/homebrew/include/png.hthere is another libpng(version 1.4) in Mono.framework on Mac:  $ ll /Library/Frameworks/Mono.framework/Libraries/libpng.dylib  $ ll /Library/Frameworks/Mono.framework/Headers/png.h
I use the same configuration for find_path and find_library, but cmake found v1.6-libpng and v1.4-png.h, so my project ran to error.Here is my testing cmake code:find_path(MYPNG_INCLUDE_DIR    NAMES        "png.h"    HINTS        ${USER_FIND_DIRS}    PATH_SUFFIXES        "include"        "include/png"    NO_CMAKE_ENVIRONMENT_PATH    NO_CMAKE_PATH    NO_SYSTEM_ENVIRONMENT_PATH)message("!!!!!!!! MYPNG_INCLUDE_DIR: ${MYPNG_INCLUDE_DIR}")find_library(MYPNG_LIBRARY    NAMES        png    HINTS        ${USER_FIND_DIRS}    PATH_SUFFIXES        "lib"        "local/lib"    NO_CMAKE_ENVIRONMENT_PATH    NO_CMAKE_PATH    NO_SYSTEM_ENVIRONMENT_PATH)message("!!!!!!!! MYPNG_LIBRARY: ${MYPNG_LIBRARY}")
The result and values of some variables are shown as following:----------------------------------------------------------------USER_CMAKE_ARGS: -G 'Unix Makefiles' -DUSER_FIND_DIRS='/Users/quanzhao/git-space/homebrew' -DCMAKE_TARGET_BUILD_TOOL:STRING='make' -DUSER_TARGET='x86_64-macosx-clang' -DCMAKE_BUILD_TYPE:STRING='Debug' -DCMAKE_C_COMPILER='/usr/bin/gcc' -DCMAKE_CXX_COMPILER='/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++' -DUSER_MODULE_SOURCE_DIR='/Users/quanzhao/git-space/tigerknows-mapcore/externals' -DUSER_MODULE_BINARY_DIR='/Users/quanzhao/git-space/tigerknows-mapcore/x86_64-macosx-clang-debug.make.build/modules' -DCMAKE_INSTALL_PREFIX='/Users/quanzhao/git-space/tigerknows-mapcore/x86_64-macosx-clang-debug.make.build/installs'----------------------------------------------------------------skip(NO_DEFAULT_PATH): 1. skip(NO_CMAKE_PATH): 1.   test(CMAKE_LIBRARY_ARCHITECTURE): 1.     each <prefix>/include/<arch> in CMAKE_PREFIX_PATH: 1.   each <prefix>/include in CMAKE_PREFIX_PATH: 1.   CMAKE_INCLUDE_PATH: 1.   CMAKE_FRAMEWORK_PATH: 2. skip(NO_CMAKE_ENVIRONMENT_PATH): 2.   test(CMAKE_LIBRARY_ARCHITECTURE): 2.     each <prefix>/include/<arch> in CMAKE_PREFIX_PATH: 2.   each <prefix>/include in CMAKE_PREFIX_PATH: 2.   CMAKE_INCLUDE_PATH: 2.   CMAKE_FRAMEWORK_PATH: 3. HINTS4. skip(NO_SYSTEM_ENVIRONMENT_PATH): 4.   PATH: /Users/quanzhao/git-space/depot_tools:/Applications/CMake.app/Contents/bin:/Users/quanzhao/packages/apache-maven-3.3.9/bin:/Applications/Cocos/tools/ant/bin:/Users/quanzhao/git-space/homebrew/bin:/Users/quanzhao/packages/android-ndk-r10e:/Users/quanzhao/packages/adt-bundle-mac-x86_64-20140702/sdk:/Applications/Cocos/frameworks:/Users/quanzhao/packages/cocos2d-x-3/templates:/Applications/Cocos/frameworks/cocos2d-x-3.9/tools/cocos2d-console/bin:/Library/Java/JavaVirtualMachines/jdk1.8.0_65.jdk/Contents/Home:/usr/local/bin:/usr/bin:/bin:/user/sbin:/sbin4.   INCLUDE: 5. skip(NO_CMAKE_SYSTEM_PATH): 5.   test(CMAKE_LIBRARY_ARCHITECTURE): 5.     each <prefix>/include/<arch> in CMAKE_SYSTEM_PREFIX_PATH: /usr/local;/usr;/;/Applications/CMake.app/Contents;/Users/quanzhao/git-space/tigerknows-mapcore/x86_64-macosx-clang-debug.make.build/installs;/sw;/opt/local5.   each <prefix>/include in CMAKE_SYSTEM_PREFIX_PATH: /usr/local;/usr;/;/Applications/CMake.app/Contents;/Users/quanzhao/git-space/tigerknows-mapcore/x86_64-macosx-clang-debug.make.build/installs;/sw;/opt/local5.   CMAKE_SYSTEM_INCLUDE_PATH: /usr/include/w32api;/usr/X11R6/include;/usr/include/X11;/usr/pkg/include;/opt/csw/include;/opt/include;/usr/openwin/include5.   CMAKE_SYSTEM_FRAMEWORK_PATH: ~/Library/Frameworks;/Library/Frameworks;/Network/Library/Frameworks;/System/Library/Frameworks6. PATHSCMAKE_FIND_FRAMEWORK: FIRSTCMAKE_FIND_APPBUNDLE: FIRSTCMAKE_FIND_ROOT_PATH: CMAKE_STAGING_PREFIX: CMAKE_SYSROOT: CMAKE_FIND_PATH_MODE_INCLUDE: ----------------------------------------------------------------skip(NO_DEFAULT_PATH): 1. skip(NO_CMAKE_PATH): 1.   test(CMAKE_LIBRARY_ARCHITECTURE): 1.     each <prefix>/lib/<arch> in CMAKE_PREFIX_PATH: 1.   each <prefix>/lib in CMAKE_PREFIX_PATH: 1.   CMAKE_LIBRARY_PATH: 1.   CMAKE_FRAMEWORK_PATH: 2. skip(NO_CMAKE_ENVIRONMENT_PATH): 2.   test(CMAKE_LIBRARY_ARCHITECTURE): 2.     each <prefix>/lib/<arch> in CMAKE_PREFIX_PATH: 2.   each <prefix>/lib in CMAKE_PREFIX_PATH: 2.   CMAKE_LIBRARY_PATH: 2.   CMAKE_FRAMEWORK_PATH: 3. HINTS4. skip(NO_SYSTEM_ENVIRONMENT_PATH): 4.   PATH: /Users/quanzhao/git-space/depot_tools:/Applications/CMake.app/Contents/bin:/Users/quanzhao/packages/apache-maven-3.3.9/bin:/Applications/Cocos/tools/ant/bin:/Users/quanzhao/git-space/homebrew/bin:/Users/quanzhao/packages/android-ndk-r10e:/Users/quanzhao/packages/adt-bundle-mac-x86_64-20140702/sdk:/Applications/Cocos/frameworks:/Users/quanzhao/packages/cocos2d-x-3/templates:/Applications/Cocos/frameworks/cocos2d-x-3.9/tools/cocos2d-console/bin:/Library/Java/JavaVirtualMachines/jdk1.8.0_65.jdk/Contents/Home:/usr/local/bin:/usr/bin:/bin:/user/sbin:/sbin4.   LIB: 5. skip(NO_CMAKE_SYSTEM_PATH): 5.   test(CMAKE_LIBRARY_ARCHITECTURE): 5.     each <prefix>/lib/<arch> in CMAKE_SYSTEM_PREFIX_PATH: /usr/local;/usr;/;/Applications/CMake.app/Contents;/Users/quanzhao/git-space/tigerknows-mapcore/x86_64-macosx-clang-debug.make.build/installs;/sw;/opt/local5.   each <prefix>/lib in CMAKE_SYSTEM_PREFIX_PATH: /usr/local;/usr;/;/Applications/CMake.app/Contents;/Users/quanzhao/git-space/tigerknows-mapcore/x86_64-macosx-clang-debug.make.build/installs;/sw;/opt/local5.   CMAKE_SYSTEM_LIBRARY_PATH: /usr/lib/w32api;/usr/X11R6/lib;/usr/lib/X11;/usr/pkg/lib;/opt/csw/lib;/opt/lib;/usr/openwin/lib5.   CMAKE_SYSTEM_FRAMEWORK_PATH: ~/Library/Frameworks;/Library/Frameworks;/Network/Library/Frameworks;/System/Library/Frameworks6. PATHSCMAKE_FIND_FRAMEWORK: FIRSTCMAKE_FIND_APPBUNDLE: FIRSTCMAKE_FIND_ROOT_PATH: CMAKE_STAGING_PREFIX: CMAKE_SYSROOT: CMAKE_FIND_PATH_MODE_LIBRARY: ----------------------------------------------------------------!!!!!!!! MYPNG_INCLUDE_DIR: /Library/Frameworks/Mono.framework/Headers!!!!!!!! MYPNG_LIBRARY: /Users/quanzhao/git-space/homebrew/lib/libpng.dylib
I am confused on this... Only I set -DCMAKE_FIND_FRAMEWORK='LAST' can get the right result: libpng.dylib and png.h in v1.6. Does CMake get any other default actions for searching headers and libraries?

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/cmake/attachments/20160303/1d4d0202/attachment-0001.html>


More information about the CMake mailing list