BH wrote: > On Fri, Mar 12, 2010 at 1:25 PM, Kornel Benko <kor...@lyx.org> wrote: >> Am Freitag 12 März 2010 schrieb Kornel Benko: >>> Am Freitag 12 März 2010 schrieb BH: >>>> I can't get cmake to recognize my enchant installation at /opt/local/. >>>> What cmake variable am I not setting correctly? >>>> >>>> BH >>> To compile, you need the development package. We are searching for include >>> files _and_ for libraries. (So e.g. for ubuntu this is: libenchant-dev + >>> libenchant1c2a) >>> >>> Kornel >>> >> Read again, I see the "unusual" path, therefore you have to patch the >> CMakeLists.txt. >> >> In trunk, look at line 228: >> ... >> find_library(ENCHANT_LIBRARY "enchant" "/usr/local/lib" "/usr/lib") >> .... >> Here you may provide your path like this: >> find_library(ENCHANT_LIBRARY "enchant" "/usr/local/lib" "/usr/lib" >> "/opt/local/lib") >> >> Appropriate change also to find the include (provided it is >> "/opt/local/enchant") >> find_path(ENCHANT_INCLUDE_DIR "enchant++.h" PATHS /usr/local/include >> /usr/local/include/enchant /usr/include /usr/include/enchant >> /opt/local/enchant) > > Thanks. I used > > cmake -DENCHANT_LIBRARY=/opt/local/lib
/opt/local/lib is a directory only and I assume ENCHANT_LIBRARY should point to a existing library. Kornel's comment was about the cmake command which searches for the 'enchant' library in existing directories: find_library(ENCHANT_LIBRARY "enchant" "/usr/local/lib" "/usr/lib") So 'cmake -DENCHANT_LIBRARY=/opt/local/lib/libenchant.so' or something similar should work. But you could also patch the cmakefile then you don't have to type these lengthy command line. Peter > -DENCHANT_INCLUDE_DIR=/opt/local/include/enchant > > and now it works. However, when cmake finishes, it now spits out this warning: > > WARNING: Target "LyX2.0" requests linking to directory > "/opt/local/lib". Targets may link only to libraries. CMake is > dropping the item. > > ... and then linking fails: > > Linking CXX executable ../bin/LyX2.0 > Undefined symbols: > "_enchant_dict_get_error", referenced from: > lyx::EnchantChecker::check(lyx::WordLangTuple const&)in EnchantChecker.o > "_enchant_dict_suggest", referenced from: > lyx::EnchantChecker::suggest(lyx::WordLangTuple const&, > lyx::docstring_list&)in EnchantChecker.o > "_enchant_broker_request_dict", referenced from: > lyx::EnchantChecker::Private::addSpeller(std::basic_string<char, > std::char_traits<char>, std::allocator<char> > const&)in > EnchantChecker.o > "_enchant_dict_free_string_list", referenced from: > lyx::EnchantChecker::suggest(lyx::WordLangTuple const&, > lyx::docstring_list&)in EnchantChecker.o > "_enchant_dict_check", referenced from: > lyx::EnchantChecker::check(lyx::WordLangTuple const&)in EnchantChecker.o > "_enchant_broker_get_error", referenced from: > lyx::EnchantChecker::Private::addSpeller(std::basic_string<char, > std::char_traits<char>, std::allocator<char> > const&)in > EnchantChecker.o > "_enchant_broker_free_dict", referenced from: > lyx::EnchantChecker::Private::~Private()in EnchantChecker.o > "_enchant_dict_add_to_session", referenced from: > lyx::EnchantChecker::accept(lyx::WordLangTuple const&)in > EnchantChecker.o > "_enchant_broker_free", referenced from: > ___tcf_0 in EnchantChecker.o > "_enchant_broker_init", referenced from: > __static_initialization_and_destruction_0(int, int)in EnchantChecker.o > "_enchant_dict_add", referenced from: > lyx::EnchantChecker::insert(lyx::WordLangTuple const&)in > EnchantChecker.o > "_enchant_dict_describe", referenced from: > lyx::EnchantChecker::Private::addSpeller(std::basic_string<char, > std::char_traits<char>, std::allocator<char> > const&)in > EnchantChecker.o > "_enchant_broker_dict_exists", referenced from: > lyx::EnchantChecker::hasDictionary(lyx::Language const*) constin > EnchantChecker.o > lyx::EnchantChecker::Private::addSpeller(std::basic_string<char, > std::char_traits<char>, std::allocator<char> > const&)in > EnchantChecker.o > ld: symbol(s) not found > collect2: ld returned 1 exit status > make[2]: *** [bin/LyX2.0] Error 1 > make[1]: *** [src/CMakeFiles/LyX2.0.dir/all] Error 2 > make: *** [all] Error 2 > > > What am I doing wrong? > > (Note: I can build lyx with enchant using autotools rather than cmake.) > > BH >