2012-01-09 127 views
5

我構建了自己的GCC和庫,並將這些庫放在/opt/gcc-4.6.2/lib中,因此通用命名庫如libstdc++不會干擾系統的其他部分。這意味着我必須手動指定庫搜索路徑:CMake set庫搜索路徑在testCXXCompiler中失敗

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

當試圖讓我的項目建設與CMake的,我似乎無法弄清楚如何告訴CMake的搜索該庫。該documentation說,使用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的使用替代庫路徑鏈接測試可執行文件?

回答

2

嗯,我不熟悉用gcc如何建立自己,但我想它應該知道到哪裏尋找它的庫。也許你應該嘗試交叉編譯。

此外,CMAKE_LIBRARY_PATH不會幫助你的問題,因爲其設置搜索庫路徑僅供CMake的,而不是編譯器。

所以,除了將CMAKE_CXX_FLAGSCMAKE_EXE_LINKER_FLAGS設置爲-L/opt/gcc-4.6.2/lib之外,我沒有看到任何其他方式。