CMake set путь поиска библиотеки терпит неудачу в testCXXCompiler - PullRequest
5 голосов
/ 09 января 2012

Я собрал свой собственный GCC и библиотеки и поместил библиотеки в /opt/gcc-4.6.2/lib, чтобы библиотеки с общим именем, такие как libstdc++, не мешали другим частям системы. Это означает, что я должен указать путь поиска библиотеки вручную:

$> g++-4.6.2 -L/opt/gcc-4.6.2/lib input.cpp

Когда я пытаюсь собрать мой проект с помощью CMake, я не могу понять, как заставить CMake искать эту библиотеку. Документация говорит об использовании CMAKE_LIBRARY_PATH, который я установил в строке, используемой для генерации моих Makefile:

$> cmake .. -DCMAKE_CXX_COMPILER=g++-4.6.2 \
            -DCMAKE_LIBRARY_PATH=/opt/gcc-4.6.2/lib

Это, однако, не выполняется в тесте простой компиляции программы:

# blah blah blah...

/usr/local/bin/g++-4.6.2
CMakeFiles/cmTryCompileExec.dir/testCXXCompiler.cxx.o -o cmTryCompileExec
-rdynamic

/usr/bin/ld: cannot find -lstdc++

# blah blah blah...

Я не могу найти магию вуду, необходимую для того, чтобы CMake испустил -L/opt/gcc-4.6.2/lib для тестовой компиляции (я знаю, CMAKE_LIBRARY_PATH работает после проекта построен). Как я могу заставить CMake использовать альтернативный путь к библиотеке для связи исполняемых файлов теста?

1 Ответ

3 голосов
/ 09 января 2012

Хм, я не знаком с тем, как gcc создает себя, но я полагаю, что он должен знать, где искать его библиотеки.Возможно, вам стоит попробовать кросс-компиляцию.

Также, CMAKE_LIBRARY_PATH не поможет вашей проблеме, так как он устанавливает путь поиска библиотек только для CMake, а не для компилятора.

Так что я нене вижу другого способа, кроме установки CMAKE_CXX_FLAGS или CMAKE_EXE_LINKER_FLAGS на -L/opt/gcc-4.6.2/lib.

...