が不足しているため、CMake メイクファイルでエラーを検出しています-fPIC
。彼女は ci20 MIPS 開発ボードからのものです:
...
[ 92%] Built target cryptopp-object
Scanning dependencies of target cryptopp-shared
Scanning dependencies of target cryptopp-static
Linking CXX static library libcryptopp.a
Linking CXX shared library libcryptopp.so
/usr/bin/ld: CMakeFiles/cryptopp-object.dir/cryptlib.cpp.o: relocation R_MIPS_HI16 against
`a local symbol' can not be used when making a shared object; recompile with -fPIC
CMakeFiles/cryptopp-object.dir/cryptlib.cpp.o: could not read symbols: Bad value
collect2: ld returned 1 exit status
プロジェクトのポリシーは、レジスタのプレッシャーにより、32 ビット x86 を除くすべての場所で PIC を使用することです。つまり、x86_64、ARM-32、Aarch32、Aarch64、MIPS、MIPS64、UltraSparc などが PIC を取得します。
ターゲット プロセッサは で提供されていると思いますCMAKE_SYSTEM_PROCESSOR
。私が抱えている問題は、ドキュメントが値を教えてくれないことです。そのため、「32 ビット x86 ではない」テストを作成する方法がわかりません。
CMakeList.txt で 32 ビット x86 プロセッサを検出するにはどうすればよいですか?
さらに良いことに、CMake が設定するプロセッサの包括的なリストを確認したいと思いますCMAKE_SYSTEM_PROCESSOR
。誰かがリストを持っているなら、それを提供するのは素晴らしいことです.