directly build the python extension modules
authorDiane Trout <diane@caltech.edu>
Tue, 5 Dec 2006 02:22:00 +0000 (02:22 +0000)
committerDiane Trout <diane@caltech.edu>
Tue, 5 Dec 2006 02:22:00 +0000 (02:22 +0000)
I learned about SET_TARGET_PROPERTIES( ... PREFIX )
to change the starting prefix for a library, which means
that I don't need to copy the libX.so to X.so to make something
a python importable module.

CMakeLists.txt
py/CMakeLists.txt
py/test/CMakeLists.txt

index 51249ceaf70bbbce1523091eb0e44031eac594e3..a5888b481d79eb1856c4a80f54b7d16c9594f18c 100644 (file)
@@ -63,7 +63,7 @@ IF(USE_PYTHON)
   TARGET_LINK_LIBRARIES(mussagl
         mussa_py
         ${QT_LIBRARIES}
-        mussa_qui_py
+        mussaqui_py
         ${BOOST_PYTHON_LIBRARY}
         ${PYTHON_LIBRARIES}
         ${PYTHON_LINK_LIBRARIES})
index 869faad95388fed5f2384c858d1470ed8c13a210..a2466f9f7894226d6b532d8b3eff8261dd0a09f3 100644 (file)
@@ -24,40 +24,56 @@ IF(BOOST_PYTHON_LIBRARY)
   SET(QUI_SOURCES
     module_qui.cpp
     MussaWindow.cpp
-  )
-  ADD_LIBRARY(mussa MODULE ${SOURCES})
+  )                        
+  SET(MUSSA_LIBRARIES
+        mussa_core
+        ${BOOST_PYTHON_LIBRARY}
+        ${BOOST_FILESYSTEM_LIBRARY}
+        ${BOOST_SERIALIZATION_LIBRARY}
+        ${OPENGL_gl_LIBRARY}
+        ${PYTHON_LIBRARIES}
+        optimized ${QT_QTCORE_LIBRARY} 
+        debug ${QT_QTCORE_LIBRARY_DEBUG}
+     )        
+  SET(STATIC_PYTHON_TARGETS "")
+  SET(SHARED_PYTHON_TARGETS "")
+  
   ADD_LIBRARY(mussa_py STATIC ${SOURCES})
-  ADD_LIBRARY(mussa_qui_py STATIC ${QUI_SOURCES})
-  # Any suggestions for a more elegant solution to this? -diane
-  IF(WIN32)
-    ADD_CUSTOM_TARGET(mussa.dll ALL
-                      COMMAND copy libmussa.dll mussa.dll
-                      DEPENDS mussa)
-  ELSE(WIN32)
-    # Not win32, aka linux and mac
-    ADD_CUSTOM_TARGET(mussa.so ALL
-                      COMMAND cp libmussa.so mussa.so
-                      DEPENDS mussa)
-  ENDIF(WIN32)
-  TARGET_LINK_LIBRARIES(mussa 
-                          mussa_core
-                          ${BOOST_PYTHON_LIBRARY}
-                          ${BOOST_FILESYSTEM_LIBRARY}
-                          ${BOOST_SERIALIZATION_LIBRARY}
-                          ${OPENGL_gl_LIBRARY}
-                          ${PYTHON_LIBRARIES}
-                          optimized ${QT_QTCORE_LIBRARY} 
-                          debug ${QT_QTCORE_LIBRARY_DEBUG} 
+  SET(${STATIC_PYTHON_TARGETS} "${${STATIC_PYTHON_TARGETS}} mussa_py")
+  ADD_LIBRARY(mussa MODULE ${SOURCES})
+  SET(${SHARED_PYTHON_TARGETS} "${${SHARED_PYTHON_TARGETS}} mussa")
+  TARGET_LINK_LIBRARIES(mussa
+                        ${MUSSA_LIBRARIES}
                         )
+  ADD_LIBRARY(mussaqui_py STATIC ${QUI_SOURCES})
+  SET(${STATIC_PYTHON_TARGETS} "${${STATIC_PYTHON_TARGETS}} mussaqui_py")  
+  # ADD_LIBRARY(mussaqui MODULE ${QUI_SOURCES})
+  # SET(${SHARED_PYTHON_TARGETS} "${${SHARED_PYTHON_TARGETS}} mussaqui")
+  #TARGET_LINK_LIBRARIES(mussaqui
+  #                      mussa_qui
+  #                      ${MUSSA_LIBRARIES}
+  #                      optimized ${QT_QTGUI_LIBRARY}
+  #                      debug ${QT_QTGUI_LIBRARY_DEBUG}
+  #                      optimized ${QT_QTOPENGL_LIBRARY}
+  #                      debug ${QT_QTOPENGL_LIBRARY_DEBUG}
+  #                     )
+  
+  # don't put the "lib" prefix infront of our shared modules                       
+  SET_TARGET_PROPERTIES(${SHARED_PYTHON_TARGETS}
+                        PROPERTIES
+                        PREFIX ""
+                       )
   GET_MUSSA_COMPILE_FLAGS(PY_CFLAGS)
   GET_MUSSA_LINK_FLAGS(PY_LDFLAGS)
   SET_SOURCE_FILES_PROPERTIES(
     ${SOURCES}
+    ${QUI_SOURCES}
     PROPERTIES
     COMPILE_FLAGS "${PY_CFLAGS}"
   )
   SET_TARGET_PROPERTIES(
-    mussa mussa_py mussa_qui_py PROPERTIES
+    ${STATIC_PYTHON_TARGETS} ${SHARED_PYTHON_TARGETS}
+    PROPERTIES
     COMPILE_FLAGS "${PY_CFLAGS}"
     LINK_FLAGS "${PY_LDFLAGS}"
   )
index f797b0b913278a8eb6ec0236db262d21d06e357a..9c5e00b364792a7349c88fe056f450e4767ce578 100644 (file)
@@ -22,7 +22,7 @@ TARGET_LINK_LIBRARIES(mussa_python_test
                         mussa_py
                         mussa_core
                         ${QT_QTCORE_LIBRARY}
-                        mussa_qui_py
+                        mussaqui_py
                         ${OPENGL_gl_LIBRARY}
                         ${BOOST_PROGRAM_OPTIONS_LIBRARY}
                         ${BOOST_FILESYSTEM_LIBRARY}