I'm using CMake for a project that comes in two versions, one of which requires -lglapi and the other does not.
So far the lines we used look like that:
SET(CMAKE_C_FLAGS "-O3 -xSSE3 -restrict -lpthread -lX11 -ldrm") SET(CMAKE_CXX_FLAGS "-O3 -xSSE3 -restrict -lpthread -lX11 -ldrm")
I added an if statement in my CMakeList.txt exactly after those lines:
if(SINGLE_MODE) SET(CMAKE_C_FLAGS ${CMAKE_C_FLAGS} " -lglapi") SET(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} " -lglapi") endif(SINGLE_MODE)
The SINGLE_MODE variable is defined a little up. When I use the message command to display the content of the flag variables it looks alright:
-O3 -xSSE3 -restrict -lpthread -lX11 -ldrm -lglapi
But when I start compiling I am running into a compile error. Using the verbose mode I realized that in the compiler call it looks like that:
-O3 -xSSE3 -restrict -lpthread -lX11 -ldrm; -lglapi
I.e. somehow a semicolon got added before adding the -lglapi to the list.
Did anyone here encounter a similar issue and knows a way to fix this issue? I've googled quite a while and studied the CMake manual but couldn't see what I did wrong here.
Thanks, Tobias
Try to do this instead:
if(SINGLE_MODE) SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -lglapi") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -lglapi") endif(SINGLE_MODE)
Then, you are sure you append -lglapi
to the existing ${CMAKE_CXX_FLAGS}
string. Else, looks like something like a CMake list is being created.
Since CMake 3.4 you do:
string(APPEND CMAKE_CXX_FLAGS " -lglapi")
This very handy when you want to set the flags only for one language (C++ in the example above), but if you want to set the same flags for all languages, you can simply do:
add_compile_options(-lglapi)
Both commands change the flags for the whole directory, if you want to set the flags for only one target, do:
target_compile_options(my_lib PUBLIC -lglapi)
Flags on a target can either be PUBLIC, PRIVATE or INTERFACE, allowing to transitively forward the flags from one target to the other.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With