2016-04-12 19 views
0

Bir C programında "dlfcn" lib ile daha fazla kullanmak için cmake ile paylaşılan bir kitaplık derlemeye çalışıyorum. Ben Cygwin'le Windows'dayım, ama windows'un (.dll ve .dll.a) paylaşılan kütüphaneleriyle "dlfcn" yi nasıl kullanacağımı bilmiyorum ve takım arkadaşlarım Linux kullanıyor. Yani .dll ve .dll.a kütüphaneleri değil, bir .so kütüphanesi oluşturmak istiyorum. Ben cmake ile yeni başlayan biriyim, bunu yapmak için bir olasılık var mı yoksa bir Linux VM kurmak zorunda mıyım?CMAKE Windows'ta bir .so kitaplığı olsun

+0

hoş geldiniz. Bir [toolchain] (https://cmake.org/cmake/help/v3.5/manual/cmake-toolchains.7.html) [crosscompile] (http://www.vtk.org) için soruyorsunuz./Wiki/CMake_Cross_Compiling). Hangi Linux dağıtımı ve sürümü hakkında konuşuyoruz? Ve - kolaylık sağlamak için - [VisualGDB] 'ye bir göz atmak isteyebilirsiniz (http://visualgdb.com/tutorials/linux/cmake/). – Florian

+0

Çok teşekkürler @Florian, çalıştım :) Bir Linux programı (_set (CMAKE_SYSTEM_NAME Linux) (ve birkaç diğer isteğe bağlı şey) _) olarak derlemek için minimal yapılandırma ile bir .cmake dosyası ekledim ve benim kütüphanelerim şimdi .so. Not: takım arkadaşlarım Gnome üzerinde çalışıyorlar. – Damien

+0

Rica ederim. Sorunuzu sadece [self answer] (http://stackoverflow.com/help/self-answer) ve sizin için çalışan toolchain dosya bilgilerini ekleyebilirsiniz. Gelecekte benzer bir sorunu olan diğer StackOverflow kullanıcılarına yardımcı olabilir. Bir şeylerin bir takım zinciri dosyasına taşınması ile ilgili bir örnek için bkz. [Işte] (http://stackoverflow.com/questions/33053840/converting-a-makefile-to-cmakelists-txt-for-tiva-c-series/33080132#33080132). – Florian

cevap

1

@Florian'a teşekkürler, sonunda yaptım. Nasıl çalıştığını bilmek istiyorum olanlar için, oldukça basit:

# this mandatory command will be the one that will make your cross-compiling work 
set(CMAKE_SYSTEM_NAME Linux) 

# indicate compilers (optional) 
set(CMAKE_C_COMPILER gcc) 
set(CMAKE_CXX_COMPILER g++) 
  • sizin cmake komutunu çağırarak, böyle bir tartışmayı ekleyin:

    • yeni .cmake dosyası oluşturma

      StackOverflow
      cmake -DCMAKE_TOOLCHAIN_FILE=./myToolChainFile.cmake ..