Homunculus Reticulli
Homunculus Reticulli

Reputation: 68396

How to print/show included directories in CMakeList

I am trying to build a trivial proof of concept project using CMake, and I am rapidly getting tired of it - to the point that I think it may have been a better idea to handcraft my own damn Makefile.

I have a directory structure that looks something like this:

project:
    /extproj
    /src/file.cpp
    /include/file1.h

My CMakeLists.txt file contains the following section, which I, having read the CMake documentation, rather naively believed, will be specifying the include directories for the project:

INCLUDE_DIRECTORIES (include/ 
                     extproj/sdk/math/linearalg/ 
                     extproj/sdk/math/nonlinearsolvers/ 
                    )  

I am trying to build it using the following command

COMMAND ${CMAKE_CXX_COMPILER} ${CMAKE_CXX_FLAGS} ${ALL_SOURCES}

Where ${ALL_SOURCES} is a list variable that contains all the C++ files I need to compile. I have verified that this variable contains the correct files.

I can't however, for the life of me, work out what on earth is being passed to the compiler as the include directories.

I searched online, and so a post that recommended using get_directory_properties. I tried that and of course CMake immediately failed to generate the Makefile and complained:

Unknown CMake command "get_directory_properties".

When I create a Makefile and run make on it, the compiler barfs immediately, with the error message:

/path/to/project/src/file1.cpp:1:10: fatal error: 'file1.h' file not found

Is there ANY WAY, I can find out what on earth is being used as the include paths being passed to my compiler?

Upvotes: 2

Views: 5265

Answers (1)

leodotcloud
leodotcloud

Reputation: 1960

I believe the correct way to compile the source files is using add_executable(executableName ${SRCS}. Then the directories added using include_directories(...) get passed to the compiler automatically.

If you are using a custom command to compile you need to change your CMakeLists.txt file.

set(MY_INCLUDE_DIRS_FLAGS "-Iinclude/ -Iextproj/sdk/math/linearalg/ -Iextproj/sdk/mat/nonlinearsolvers/")

set(MY_COMPILE_COMMAND ${CMAKE_CXX_COMPILER} ${MY_INCLUDE_DIRS_FLAGS} ${CMAKE_CXX_FLAGS} ${ALL_SOURCES}

Upvotes: 1

Related Questions