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