outre lib_srcs au lieu de lib_src et IlmImf au lieu d'IlmThread, cela a fait l'affaire! Merci beaucoup !
berak
20
Remarque: lorsque vous supprimez l'élément de la liste, assurez-vous que la valeur que vous recherchez correspond exactement à ce qu'elle est dans la liste. J'avais des difficultés à mélanger $ {CMAKE_SOURCE_DIR} /src/file_to_remove.cpp avec $ {CMAKE_CURRENT_SOURCE_DIR} /../ file_to_remove.cpp. Il pointe vers le même emplacement, mais ce n'est pas la même chaîne. message ("$ {VARIABLE_NAME}") peut vous aider à déboguer ces contenus.
hbobenicio
Cela n'aide pas si vous utilisez CONFIGURE_DEPENDSet devez exclure un fichier produit par la construction. Un filtre sur la liste après l' fileappel déclenche toujours une reconstruction que, dans mon cas, j'essaie d'éviter.
simon.watts
C'est beaucoup mieux d'utiliserlist(FILTER
hukeping le
2
La solution ci-dessus ne fonctionne pas pour moi avec camke version 3.10.2 Mais la solution ci-dessous: list(FILTER <list> <INCLUDE|EXCLUDE> REGEX <regular_expression>) fonctionne bien pour moi.
MH Yip
42
FILTER est une autre option qui pourrait être plus pratique dans certains cas:
The following characters have special meaning in regular expressions:
^ Matches at beginning of input
$ Matches at end of input
. Matches any single character
[ ] Matches any character(s) inside the brackets
[^ ] Matches any character(s) not inside the brackets
- Inside brackets, specifies an inclusive range between
characters on either side e.g. [a-f] is [abcdef]
To match a literal - using brackets, make it the first
or the last character e.g. [+*/-] matches basic
mathematical operators.
* Matches preceding pattern zero or more times
+ Matches preceding pattern one or more times
? Matches preceding pattern zero or once only
| Matches a pattern on either side of the |
() Saves a matched subexpression, which can be referenced
in the REGEX REPLACE operation. Additionally it is saved
by all regular expression-related commands, including
e.g. if( MATCHES ), in the variables CMAKE_MATCH_(0..9).
C'est certainement une meilleure réponse, bien que si vous essayez de l'utiliser pour exclure un répertoire entier ou si votre regex est foirée, vous pourriez en exclure plus que vous ne le souhaitez. Par exemple, essayer d'exclure .*test/.*peut tout exclure si votre projet se trouve dans une arborescence de répertoires où l'un des répertoires parents est appelé quelque chose comme mytest.
CONFIGURE_DEPENDS
et devez exclure un fichier produit par la construction. Un filtre sur la liste après l'file
appel déclenche toujours une reconstruction que, dans mon cas, j'essaie d'éviter.list(FILTER
list(FILTER <list> <INCLUDE|EXCLUDE> REGEX <regular_expression>)
fonctionne bien pour moi.FILTER est une autre option qui pourrait être plus pratique dans certains cas:
Cette ligne exclut tous les éléments se terminant par le nom de fichier requis:
Voici la spécification Regex pour cmake:
la source
list(REMOVE_ITEM
list(FILTER ...)
été introduit dans cmake v3.6: stackoverflow.com/a/42167646/3476780.*test/.*
peut tout exclure si votre projet se trouve dans une arborescence de répertoires où l'un des répertoires parents est appelé quelque chose commemytest
.essaye ça :
CMakeLists.txt
la source