Ответ 1
"${src}.out"
должен работать нормально, поэтому вы можете написать set(NAME "${src}.out")
и использовать ${NAME}
везде, где вам нужно.
Есть ли способ связать строки в cmake?
У меня есть папка, в которой содержатся только файлы .cpp с основными методами. Я думал, что это будет легко, просто используя foreach через все файлы src. Вот что у меня получилось так:
project(opengl-tutorial)
cmake_minimum_required(VERSION 2.8)
aux_source_directory(. SRC_LIST)
add_definitions(
--std=c++11
)
foreach (src ${SRC_LIST})
# name = ${src} + ".out"
add_executable(${name} ${src})
target_link_libraries(${name} GL GLU GLEW glfw)
endforeach(src ${SRC_LIST})
Как я могу сделать то, что описано в комментарии?
"${src}.out"
должен работать нормально, поэтому вы можете написать set(NAME "${src}.out")
и использовать ${NAME}
везде, где вам нужно.
если вы просто хотите иметь дело со строковым значением, см. @nonexplosive answer.
Однако, если вы хотите иметь переменную Cmake в своем CMakeLists.txt
и установить эту переменную в какое-то значение, используйте либо: [string()
] для Cmake 3.0+ (https://cmake.org/cmake/help/v3.0/command/string.html) или set()
для Cmake 2.0 +.
Причина, по которой у вас есть два варианта, состоит в том, что старший cmake не поддерживает функцию CONCAT
.
Пример CMakeLists.txt:
cmake_minimum_required(VERSION 2.8.11)
project(Hello)
string(CONCAT x "hello" "goodbye")
set(y "hellogoodbye")
message(STATUS "DEBUG: x=${x}")
message(STATUS "DEBUG: y=${y}")
Полный вывод:
-- DEBUG: x=hellogoodbye
-- DEBUG: y=hellogoodbye
-- Configuring done
-- Generating done
-- Build files have been written to: /home/_______/testing/_______