src/CMakeLists.txt |
|
---|---|
Build TeXworks |
|
Collect Source Files |
|
NOTE: A |
FILE(GLOB TEXWORKS_SRCS "*.cpp" "*.c")
FILE(GLOB TEXWORKS_HDRS "*.h")
FILE(GLOB TEXWORKS_UIS "*.ui")
FILE(GLOB TEXWORKS_RCS "${TeXworks_SOURCE_DIR}/res/*.qrc")
FILE(GLOB TEXWORKS_TRANS_TS "${TeXworks_SOURCE_DIR}/trans/*.ts")
FILE(GLOB TEXWORKS_TRANS_QM "${TeXworks_SOURCE_DIR}/trans/*.qm" "${TeXworks_SOURCE_DIR}/trans/qt/*.qm" "${TeXworks_SOURCE_DIR}/modules/QtPDF/trans/*.qm")
IF ( WIN32 )
FILE(GLOB TEXWORKS_WIN_RCS "${TeXworks_SOURCE_DIR}/res/*.rc")
LIST(APPEND TEXWORKS_SRCS ${TEXWORKS_WIN_RCS})
ENDIF ( WIN32 )
IF ( SYNCTEX_FOUND AND NOT PREFER_BUNDLED_SYNCTEX )
FILE(GLOB SYNCTEX_SRCS "synctex_*.c")
FILE(GLOB SYNCTEX_HDRS "synctex_*.h")
LIST(REMOVE_ITEM TEXWORKS_SRCS ${SYNCTEX_SRCS})
LIST(REMOVE_ITEM TEXWORKS_HDRS ${SYNCTEX_HDRS})
ENDIF ( SYNCTEX_FOUND AND NOT PREFER_BUNDLED_SYNCTEX ) |
These source files along with the |
SET(TeXworks_SCRIPT_API
${CMAKE_CURRENT_SOURCE_DIR}/TWScript.cpp
${CMAKE_CURRENT_SOURCE_DIR}/TWScriptAPI.cpp
PARENT_SCOPE
)
SET(TeXworks_SCRIPT_API_H
${CMAKE_CURRENT_SOURCE_DIR}/TWScript.h
${CMAKE_CURRENT_SOURCE_DIR}/TWScriptAPI.h
${CMAKE_CURRENT_SOURCE_DIR}/TWSystemCmd.h
${CMAKE_CURRENT_SOURCE_DIR}/ConfigurableApp.h
PARENT_SCOPE
) |
App Setup |
|
On OS X, set GUI type to an |
IF ( APPLE )
SET(GUI_TYPE MACOSX_BUNDLE)
LIST(APPEND TeXworks_LIBS "-framework CoreServices")
FILE(GLOB TeXworks_APP_ICONS ${TeXworks_SOURCE_DIR}/*.icns)
SET_SOURCE_FILES_PROPERTIES( ${TeXworks_APP_ICONS}
PROPERTIES
MACOSX_PACKAGE_LOCATION Resources
)
ENDIF () |
WARNING: Windows is untested |
IF ( WIN32 )
SET(GUI_TYPE WIN32)
ENDIF () |
Make sure the compiler can find include files. |
INCLUDE_DIRECTORIES(${TeXworks_INCLUDE_DIRS}) |
Make sure the compiler can find library files. |
LINK_DIRECTORIES(${TeXworks_LIB_DIRS})
ADD_DEFINITIONS(-DTW_BUILD_ID=${TW_BUILD_ID})
IF (UNIX AND NOT APPLE)
IF (IS_ABSOLUTE ${TeXworks_HELP_DIR})
ADD_DEFINITIONS(-DTW_HELPPATH="${TeXworks_HELP_DIR}")
ELSE ()
ADD_DEFINITIONS(-DTW_HELPPATH="${CMAKE_INSTALL_PREFIX}/${TeXworks_HELP_DIR}")
ENDIF ()
IF (IS_ABSOLUTE ${TeXworks_PLUGIN_DIR})
ADD_DEFINITIONS(-DTW_PLUGINPATH="${TeXworks_PLUGIN_DIR}")
ELSE ()
ADD_DEFINITIONS(-DTW_PLUGINPATH="${CMAKE_INSTALL_PREFIX}/${TeXworks_PLUGIN_DIR}")
ENDIF ()
IF (IS_ABSOLUTE ${TeXworks_DIC_DIR})
ADD_DEFINITIONS(-DTW_DICPATH="${TeXworks_DIC_DIR}")
ELSE ()
ADD_DEFINITIONS(-DTW_DICPATH="${CMAKE_INSTALL_PREFIX}/${TeXworks_DIC_DIR}")
ENDIF ()
ENDIF () |
Poppler supports XPDF API calls? |
IF (POPPLER_HAS_XPDF)
INCLUDE_DIRECTORIES(${POPPLER_XPDF_INCLUDE_DIR})
ADD_DEFINITIONS(-DHAVE_POPPLER_XPDF_HEADERS)
ENDIF () |
Qt-Specific Source Code Processing |
IF (${QT_VERSION_MAJOR} EQUAL 5) |
Run uic on user interface files. |
QT5_WRAP_UI(TEXWORKS_GEN_UI ${TEXWORKS_UIS})
ELSE() |
Run uic on user interface files. |
QT4_WRAP_UI(TEXWORKS_GEN_UI ${TEXWORKS_UIS})
ENDIF() |
Run rcc on reasource files. |
QT_ADD_RESOURCES(TEXWORKS_GEN_RCS ${TEXWORKS_RCS}) |
Add translations |
QT_ADD_QM_TRANSLATIONS(TEXWORKS_GEN_TRANS ${TEXWORKS_TRANS_QM}) |
Create .pro file that can be used for easy updating with |
SET(TEXWORKS_TRANS_FILE_LIST
${TEXWORKS_SRCS} ${TEXWORKS_HDRS} ${TEXWORKS_UIS} ${TEXWORKS_TRANS_TS}
)
LIST(SORT TEXWORKS_TRANS_FILE_LIST)
CREATE_QT_PRO_FILE(
"${CMAKE_SOURCE_DIR}/trans/${PROJECT_NAME}_trans.pro"
"src"
${TEXWORKS_TRANS_FILE_LIST}
)
IF ( APPLE OR NOT UNIX )
SET(EXE_NAME TeXworks)
ELSE ( APPLE OR NOT UNIX )
SET(EXE_NAME texworks)
ENDIF ( APPLE OR NOT UNIX ) |
Compilation |
IF (NOT ${BUILD_SHARED_PLUGINS})
IF (WITH_LUA)
LIST(INSERT TeXworks_LIBS 0 TWLuaPlugin ${LUA_LIBRARIES})
ENDIF()
IF (WITH_PYTHON)
LIST(INSERT TeXworks_LIBS 0 TWPythonPlugin ${PYTHON_LIBRARIES})
ENDIF()
ENDIF() |
Build the executible. |
ADD_EXECUTABLE( ${EXE_NAME} ${GUI_TYPE}
${TEXWORKS_SRCS}
${TEXWORKS_GEN_UI} ${TEXWORKS_GEN_RCS} ${TEXWORKS_GEN_TRANS}
${TeXworks_APP_ICONS}
) |
Specify libraries to be linked to TeXworks. |
TARGET_LINK_LIBRARIES( ${EXE_NAME} ${MODULE_LIBS} ${TeXworks_LIBS} ) |
For OS X, generate |
IF (APPLE)
SET(VER ${TeXworks_VERSION})
SET(REV ${TeXworks_GIT_HASH})
CONFIGURE_FILE(${TeXworks_SOURCE_DIR}/TeXworks.plist.in
${TeXworks_SOURCE_DIR}/TeXworks.plist
@ONLY
)
SET_TARGET_PROPERTIES( TeXworks PROPERTIES
MACOSX_BUNDLE_INFO_PLIST
${TeXworks_SOURCE_DIR}/TeXworks.plist
)
ENDIF ()
IF (${QT_VERSION_MAJOR} EQUAL 5 AND UNIX)
SET_TARGET_PROPERTIES(${EXE_NAME} PROPERTIES COMPILE_FLAGS -fPIC)
ENDIF () |
Installation |
INSTALL( TARGETS ${EXE_NAME}
RUNTIME DESTINATION bin COMPONENT
BUNDLE DESTINATION . COMPONENT
)
IF ( UNIX AND NOT APPLE )
INSTALL(FILES ${TeXworks_SOURCE_DIR}/res/images/TeXworks.png DESTINATION ${CMAKE_INSTALL_PREFIX}/${TeXworks_ICON_DIR})
INSTALL(FILES
${TeXworks_SOURCE_DIR}/COPYING
${TeXworks_SOURCE_DIR}/README.md
${TeXworks_SOURCE_DIR}/NEWS
DESTINATION ${CMAKE_INSTALL_PREFIX}/${TeXworks_DOCS_DIR})
INSTALL(FILES ${TeXworks_SOURCE_DIR}/man/texworks.1 DESTINATION ${CMAKE_INSTALL_PREFIX}/${TeXworks_MAN_DIR})
INSTALL(FILES ${TeXworks_SOURCE_DIR}/texworks.desktop DESTINATION ${CMAKE_INSTALL_PREFIX}/${TeXworks_DESKTOP_DIR})
INSTALL(FILES ${TeXworks_SOURCE_DIR}/texworks.appdata.xml DESTINATION ${CMAKE_INSTALL_PREFIX}/${TeXworks_APPDATA_DIR})
ENDIF ( UNIX AND NOT APPLE ) |
On OS X, ensure there is always a Protip: If there are wierd errors like "Qt libraries loaded twice" or
"looking for a tablet device", then something may have gone pear shaped with
|
IF ( APPLE )
SET(QTCONF_DIR ${PROJECT_NAME}.app/Contents/Resources)
SET(QTCONF_CONTENTS "[Paths]\nPlugins = PlugIns")
INSTALL( CODE
"
FILE(WRITE \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${QTCONF_DIR}/qt.conf\"
\"${QTCONF_CONTENTS}\"
)
"
)
ENDIF() |