Hi!

Am 30.07.2010 22:23, schrieb Clark Taylor:
I have created a very simple CMake file (I am a newbie) that works wonderfully in Linux, but am having problems in Windows. The CMakeLists.txt is below
#I think 2.6 is required for some of things I do below, but I am not sure
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
# This is the CMake file for my application.  This
# will be my first CMake file of decent size, so please excuse
# any particularly bad syntax :)
PROJECT(MyApp)
FIND_PACKAGE(wxWidgets REQUIRED)
FIND_PACKAGE(OpenCV REQUIRED)
FIND_PACKAGE(EXPAT REQUIRED)
INCLUDE (${wxWidgets_USE_FILE} ${OpenCV_USE_FILE} ${EXPAT_INCLUDE_DIRS})
This looks wrong. INCLUDE() includes another file into your cmake script, it does not set the include directories for the compiler. This is what include_directories() is for. I guess it may be right for wxWidgets_USE_FILE and OpenCV_USE_FILE, if their cmake-modules create files that shall be included directly into your CMake script. But EXPAT_INCLUDE_DIRS is a variable that contains the path to the header files, so you should use the following to let the compiler know about it:
  include_directories(${EXPAT_INCLUDE_DIRS})

SET(Headers myApp.h myAppGUI.h myAppGUImpl.h Coordinates/Coordinates.h)
SET(Src myApp.cpp myAppGUI.cpp myAppGUImpl.cpp Coordinates/Coordinates.cpp)

ADD_EXECUTABLE(myApp ${Headers} ${Src})
You should not need to add ${Headers} here (usually only the sources should be compiled).

TARGET_LINK_LIBRARIES(myApp ${wxWidgets_LIBRARIES} ${OpenCV_LIBS} ${EXPAT_LIBRARIES})

#End of code
Everything works great in Linux, but when I try to use this in Windows, I have series of problems, all inter-related. Problem #1. While wxWidgets and OpenCV work seamlessly, Cmake can't find the expat libraries. (They are installed. I installed the expat libraries using the basic windows download and install package). Problem #2. While I can overcome problem #1 by hardcoding in where the expat include directory and library files are (setting the values in the CMake GUI), when I then open up the resulting solution in Visual Studio 2008 Express and compile my code, the compiler gives the error "can't find expat.h" Problem #3. I can fix that problem as well by directly modifying the solution properties, but then when I run the project, it dies because it can't find libexpat.dll. So, in summary, I think cmake is completely ignoring libexpat, even when I explicitly tell it (in the gui) where the include and library files are.
Any ideas?
If this doesn't help, try to determine whether the variables are set correctly, e.g. by using message(${EXPAT_INCLUDE_DIRS}) to print it's content when cmake is run. But you should already get an error message if the required libraries could not be found...

Sorry if this is an extremely stupid question, but I did not find any related information on Google, so..... Hopefully this will help make me a more intelligent user of CMake :)
Hope it helps :)

Stefan

--
Clark


_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake

_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to